개발자 린다씨 2023. 1. 8. 18:00
반응형

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;
반응형