Never 타입
Last updated
function foo(x: string | number): boolean {
if (typeof x === "string") {
return true;
} else if (typeof x === "number") {
return false;
}
// never 타입이 없다면 오류 발생 :
// - 코드 경로 중에 값을 반환하지 않는 경로 존재 (strictNullChecks)
// - 또는 접근 불가능한 코드 검출
// 하지만 TypeScript는 `fail` 함수는 `never` 리턴임을 알 수 있고
// 런타임 안전 / 빠짐없는 검사를 위해 이런 함수를 호출할 수 있음.
return fail("Unexhaustive!");
}
function fail(message: string): never { throw new Error(message); }// 추론된 리턴 타입: void
function failDeclaration(message: string) {
throw new Error(message);
}
// 추론된 리턴 타입: never
const failExpression = function(message: string) {
throw new Error(message);
};function failDeclaration(message: string): never {
throw new Error(message);
}class Base {
overrideMe() {
throw new Error("You forgot to override me!");
}
}
class Derived extends Base {
overrideMe() {
// Code that actually returns here
}
}