앞의 예제에서 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
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.