배운 대로 instanceof를 사용했지만 에러가 발생합니다. 여기서 기억해야 하는 건, 타입 좁히기는 자바스크립트 문법을 사용해서 진행해야 한다는 점입니다. 즉, if문은 자바스크립트에서 실행되는 코드인데, X는 자바스크립트의 값이 아니라 타입스크립트의 인터페이스이므로 에러가 발생하는 것이죠.
타입 좁히기는 자바스크립트 문법을 사용해서 진행해야 한다.
자바스크립트에서도 실행할 수 있는 코드여야 하기 때문이다.
instanceof를 사용할 수 없다면 X와 Y의 차이점에 주목해야 합니다. X에는 width, height 속성이 있고, Y에는 length와 center가 있습니다. 속성으로 구분하면 될 것 같은데, 함수를 다음과 같이 수정해보겠습니다.
function objXorY(param: X | Y) {
if (param.width) {
param;
} else {
param;
}
}
// Property 'width' does not exist on type 'X | Y'. Property 'width' does not exist on type 'Y'.