TypeScript/Basic-Types

TypeScript - never

KDONG 2022. 2. 7. 12:49

typescript13

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