그러면 두 타입이 다를 때 Equal2<X, Y> 타입이 false가 된다는 것만 확인하면 됩니다. Xstring, Yany라고 해봅시다. 이제 T에 여러 타입을 넣어서 하나라도 false가 나오는지 확인합니다. 하나만 false여도 (<T>() => T extends string ? 1 : 2) 타입을 (<T>() => T extends any ? 1 : 2) 대입할 수 없기 때문입니다. 여기서는 Tnumber일 때 false가 됩니다.

    이처럼 X, Y가 서로 다른 경우에는 대부분 쉽게 Equal2<X, Y>false로 만드는 T를 찾을 수 있습니다. 다양한 사례를 표로 정리해보았습니다. 언제나 extendsfalse로 만드는 T가 있습니다.

    ▼ 표 2-3 반례 T를 찾을 수 있습니다

    X

    Y

    T

    (<T>() => T extends X ? 1 : 2)

    (<T>() => T extends Y ? 1 : 2)

    extends

    string

    any

    number

    2

    1

    false

    any

    string

    number

    1

    2

    false

    1

    number

    2

    2

    1

    false

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.