더북(TheBook)

앞의 예제에서 A1(string) extends stringtrue이므로 B1 타입은 number이고, A2(number) extends stringfalse이므로 B2 타입은 boolean입니다.

extends라는 예약어 때문에 헷갈릴 수 있는데 명시적으로 extends해야만 참이 되는 것이 아닙니다.

interface X {
  x: number;
}
interface XY {
  x: number;
  y: number;
}
interface YX extends X {
  y: number;
}

type A = XY extends X ? string : number;
// type A = string
type B = YX extends X ? string : number;
// type B = string
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.