never
never
는 일반적으로 함수의 리턴 타입으로 사용되는데, 함수가 항상 예외를 던지거나, 무한루프를 돌아 정상적인 값을 리턴 받을 수 없는 경우에 사용한다.
function throwError(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while(true) { count++; }
}
any
any
는 모든 타입을 허용하고, 어떤 타입으로도 할당 가능하도록 (JS 처럼) 하는 타입이다. 그래서, 타입스크립트 컴파일러가 any
타입의 객체에 어떤 값에 접근 하려고 해도, 있던 없던 컴파일 시에는 문제가 생기지 않는다. 즉, 런타임에서 문제가 될 가능성이 매우 높다. 그래서 보통 잘 사용하지 않는다.
unknown
unknown
은 모든 타입을 허용하지만, 어떤 타입이 올지 알 수 없다는 뜻이다. 그래서, 타입스크립트 컴파일러가 unknown
타입의 어떤 값에 아무런 타입 검증 없이 접근 하거나 연산하려고 하면, 컴파일 시에 문제가 반드시 생긴다. 어떤 값이든 올 수 있으므로 엄격하게 검사하라는 뜻이다.
mixed
mixed
는 array 에서 타입이 여러개 섞인 경우 사용한다. 이 경우 모든 경우를 커버 할 수 있도록 해야한다.