반응형
주로 return에 사용된다.
function error(message: string): never {
throw new Error(message);
}
function fail(){
return error('failed');
}
// 무한 루프
function infiniteLoop(): never {
while(true){
}
}
never 타입은 모든 타입의 subtype 이며, 모든 타입에 할당 할 수 있습니다.
하지만, never에는 그 어떤 것도 할당할 수 없습니다.
any 조차도 never에게 할당 할 수 없습니다.
잘못된 타입을 넣는 실수를 막고자 할 때 사용하기도 한다.
declare const a2: string | number;
// never를 이용해서 잘못된 타입을 넣지 않는 방법
if (typeof a2 !== 'string'){
a2; // numver
if (typeof a2 !== 'number'){
a2; // never
}
}
type Indexable<T> = T extends string ? T & {[index: string]: any} : never;
type ObjectIndexable = Indexable<'aa'>;
type ObjectIndexable2 = Indexable<{}>;
반응형