TypeScript/Basic-Types
TypeScript - never
KDONG
2022. 2. 7. 12:49
Never
function error(message: string): never {
throw new Error(message);
}
function fali() {
return error("failed");
}
function infinitLoop(): never {
while (true) {}
}
- never 타입은 모든 타입의 subtype 이며, 모든 타입에 할당할 수 있다.
- 하지만, never 에는 그 어떤 것도 할당할 수 없다.
- any 조차도 never에게 할당할 수 없다.
- 잘못된 타입을 넣는 실수를 막고자 할 때 사용하기도 한다.
let a: string = "Kdong";
if (typeof a !== 'string') {
a; // let a: never
}
declare const b: string | number;
if (typeof b !== "string") {
b; // const b: number
}
type Indexable<T> = T extends string ? T & { [index: string]: any } : never;
// 마치 타입이 변수처럼 쓰이는 제네릭형태이다.
// 만약에 T 가 스트링이리면 { [index: string]: any } 아니면 never
type ObjectIndexable = Indexable<{}>;
const b: Indexable<{}> = "";
Notion : https://torpid-pasta-de7.notion.site/Basic-Types-7c1eff4fb5f3449e932fb1d157da1f25