✔️ Typescript
전에 이어서 독특한 타입을 몇 가지 알아보겠다.
우리는 이전에 흔히 자바스크립트에서도 쓰이는 타입들을 다뤄보았다
(number, string, boolean, number array, boolean array)
이번엔 타입스크립트에서만 존재하는 것이고 Type Checker 와 소통을 할 수 있게 도와준다!
그러면 어떤 타입인지 모르는 변수는 Typescript 에게 말해줄까?
이 때, 우리는 'unknown' 이라는 타입을 쓸 수 있다!
예 )
변수 a 앞에 똑같이 콜론을 해주고 unknown 이라고 작성한다!
이렇게 하면 타입스크립트로부터 일종의 보호를 받으면서 어떠한 작업을 할려면 이 변수의 타입을 먼저 확인해야 하는 방식이다.
한 번 코드로 예를 들어보면...
b 는 a + 1 이라고 하는데 타입스크립트는 이러한 행동을 허락하지 않는다.
a 는 unknown 이라는 타입을 갖고있기 때문!
그러면 어떻게 할까?
먼저, 타입을 체크해준다.
if 문을 사용해 a 가 숫자형일시, b 는 a + 1 이라고 말해준다.
해당 if 문 범위 안에서는 a 는 숫자이다!
그러면 a 의 타입이 문자열일 때?
toUpperCase 메서드를 사용해도 아무런 제재가 없다!
예 )
hello 라는 함수에다가 마우스를 갖다대면...
이렇게 void (아무것도 리턴하지 않는다)가 뜨게된다
결과는...
void 라는 타입에는 toUpperCase 는 존재하지 않는다고 되어있다!
예 )
에러를 자세히 보면...
문자열은 타입 never 에 지정하지 않았다고 한다.
하지만 오류를 발생시키면...
이건 return 하지 않고 오류를 발생시키는 함수이다!
그리고 never 타입은 두 가지일 수 있는 상황에 발생할 수 있다.
예 )
good 이라는 함수에 파라미터로 name 이 있는데, 그 파라미터의 타입으로는 string 이거나 number 일 가능성이 있다.
그리하여 name 은 둘 중에 하나일 가능성이 있어, 오류가 발생했다.
이 때, typeof 와 if 문을 사용해서 오류를 방지할 수 있다.
마지막 else 의 name 에다가 마우스를 갖다대면...
처음 if 와 else if 에서 name 이 문자열이고 숫자형이다고 말해주었기 때문에 마지막은 뭘 쓰든 타입은 never 가 된다.
그 말은, 즉 밑에 있는 else 는 절대 실행되지 않는다.
끝으로 :