반응형
never
never는 절대 반환하지 않는(예외를 던지거나 영원히 실행되는) 함수 타입을 가리킵니다.
never는 리턴에서 사용되며, 리턴에 사용되는 경우, 아래 3가지 정도의 경우가 대부분입니다.
function error(message: string): never {
throw new Error(message);
}
function fail() {
return error("뭔가 실패했슴다만...?");
}
function infiniteLoop(): never {
while(true) {
}
}
unknown이 모든 타입의 상위 타입이라면, never는 모든 타입의 서브 타입입니다. 즉, 모든 타입에 never를 할당할 수 있으며, never 값은 어디서든 안전하게 사용할 수 있습니다.
하지만 never에는 그 어떤 것도 할당할 수 없습니다.
any 조차도 never에게 할당할 수 없습니다. 그래서 잘못된 타입을 넣는 실수를 막고자 할 때 사용하기도 합니다.
let a: string = 'hi';
if(typeof a !== 'string') {
let b: never = a;
}
type Indexable<T> = T extends string ? T & { [index : string]: any } : never;
반응형