never type은 아무 값도 저장하고 있지 않은 타입임. 따라서 never type을 가지고 있는 변수에는 값을 할당할 수 없음.
보통 아래처럼 언제나 에러를 리턴하는 함수에 사용함.
function raiseError(message: string): never {
throw new Error(message);
}
// 아래의 return type은 never로 infer됨
function reject() {
return raiseError('Rejected');
}
아래 forever()처럼 무한루프를 보유한 함수의 return type도 never type임.
let loop = function forever() {
while (true) {
console.log('Hello');
}
}
아래처럼 type narrow를 하면 a에 string이나 number type이 아닌 값이 들어올 경우 에러가 발생함.
function fn(a: string | number): boolean {
if (typeof a === "string") {
return true;
} else if (typeof a === "number") {
return false;
}
}
따라서 위 코드를 아래처럼 string이나 number가 아닐경우에 never type을 return 하게 만들면됨.
- never type은 값을 저장하고 있지 않음.
- never tpye은 언제나 에러를 throw하는 함수의 return type이거나 무한루프를 보유한 함수의 return type임.