따라서 Equal2 타입은 두 타입이 동일한 타입인지 판단할 때 사용할 수 있습니다.
• Equal2 타입을 사용하면 any는 다른 타입과 잘 구별하나 인터섹션을 인식하지 못합니다.
• Equal2<any, unknown>의 경우는 extends를 false로 만드는 T가 없음에도 false가 됩니다.
위 두 경우는 타입스크립트의 논리적 한계를 보여주는 사례입니다.
type R5 = Equal2<any, 1>;
// type R5 = false
type R6 = Equal2<{ x: 1 } & { y: 2 }, { x: 1, y: 2 }>;
// type R6 = false
type R7 = Equal2<any, unknown>;
// type R7 = false
이처럼 Equal의 두 방식에는 각자 장단점이 있으니 필요에 따라 선택하면 됩니다.