// Function returning never must have unreachable end point
// never 를 처리하지 않으면, void 로 추론
function error(message: string): never {
throw new Error(message);
}
// Inferred return type is never
// never 를 처리하지 않아도, never 로 추론
function fail() {
return error("Something failed");
}
// Function returning never must have unreachable end point
// never 를 처리하지 않으면, void 로 추론
function infiniteLoop(): never {
while (true) {
}
}
Tip) 에러를 막는 용도로 사용
- 잘못된 타입을 넣는 실수를 막고자 할 때 사용.
// T 가 object 형이 아닌 경우 사용할 수 없도록 필터링
type Indexable<T> = T extends string
? T & { [index: string]: any }
: never;