이정환 님의 한 입 크기로 잘라먹는 타입스크립트 를 수강한 내용 입니다.
any
any 타입은 타입스크립트에서만 제공되는 특별한 타입으로 타입 검사를 받지 않는 특수한 타입 입니다.
다음과 같은 변수가 있다고 가정해봅시다.
타입스크립트에서는 변수의 타입이 변수를 초기화할 때 초기화 하는 값을 기준으로 추론하기 때문에 이렇게 하면 오류가 발생합니다.
이럴 때
any
타입을 사용하면 어떠한 타입 검사도 받지 않습니다.즉, 아무 타입의 값을 받을 수 있고 관련 메서드도 호출 할 수 있습니다.
편한 만큼 위험한 any 타입
위의 코드를 컴파일 하면 런타임 오류가 발생 합니다.
any 타입은 타입 검사를 받지 않는 타입이므로 모든 타입스크립트의 문법과 규칙으로부터 자유롭지만 그만큼 위험한 타입입니다.
any 타입을 많이 사용하면 타입 검사가 제대로 이루어지기 않기 때문에 타입스크립트를 사용하는 이유가 없습니다.
unknown 타입
unknown 타입은 any 타입과 비슷하지만 보다 안전한 타입 입니다.
- unknown 타입의 변수는 다음과 같이 어떤 타입의 값이든 다 저장 할 수 있습니다.
unknown 특징
그러나 반대로 unknown 타입의 값은 어떤 타입의 변수에도 저장할 수 없습니다.
또 unknown 타입의 값은 어떤 연산에도 참여할 수 없으며, 어떤 메서드도 사용할 수 없습니다.
만약 위와 같이 unknown 타입의 값을 number 타입의 값처럼 취급
하고
- 곱셈 연산을 수행하게 하고 싶다면 다음과 같이 조건문을 이용해 이 값이 number 타입의 값 임을 보장 해줘야 합니다.
any 보다 unknown ?
특정 변수가 당장 어떤 값을 받게 될 지 모른다면
- any 타입으로 정의하는 것 보단 unknown 타입을 이용하는게 훨씬 안전한 선택이 됩니다.
void 타입
void 타입은 아무런 값도 없음을 의미하는 타입 입니다.
- 보통 아무런 값도 반환하지 않는 함수의
반환 값 타입을 정의
할 때 사용 합니다.
never 타입
never 타입은 불가능을 의미하는 타입 입니다.
다음과 같이 함수가 어떠한 값도 반환할 수 없는 상황일 때 해당 함수의 반환 값 타입을 정의할 때 사용됩니다.
불가능 한 값의 타입을 정의할 때 never 타입 사용
또한 변수의 타입을 never로 정의하면 any를 포함해 그 어떠한 값도 담을 수 없습니다.