더북(TheBook)

그러면 두 타입이 다를 때 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

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