더북(TheBook)

Tstring | number인 경우 T extends Tstring | number extends string | number가 아니라 (string extends string | number) | (number extends string | number)가 됩니다. 이는 다음 코드에 영향을 미치는데 [U] extends [T][string | number] extends [string] 또는 [string | number] extends [number]가 됩니다. U = T를 통해 U에 분배법칙이 일어나지 않은 원본 타입을 담아두었습니다. 그래서 [U] extends [T]false가 되어 최종적으로 IsUnion<string | number>true가 됩니다.

만약 Tstring이었다면 [U] extends [T]에서 [string] extends [string]이 되므로 true가 되어 버립니다. 그러면 최종적으로 IsUnion<string>false가 됩니다.

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