본문 바로가기
개발/TypeScript

typeof로 object를 구분할 수 없을때 narrowing 하는 방법 : IN 연산자

by 안뇽! 2022. 1. 19.
반응형

다음과 같은 경우에는 어떤 에러가 뜰까??

type Korea = { 독도: string };
type Japan = { 후지산: string };

function nationFunction(nation: Korea | Japan) {
  console.log(nation.독도);
}

nationFunction({ 독도: "는 우리땅" });

 

Japan에 '독도' 속성이 없기 때문에, 에러가 발생한다.

이를 해결하기 위해 narrowing을 해야 하는데, typeof의 결과는 number, string, object, array 등이다.

Korea, Japan은 typeof에 해당하지 않는다.

 

그렇다면 어떻게 해야할까??

 

Korea와 Japan에 공통되지 않는 속성을 골라서 in을 사용한다.

 

다음과 같은 결과가 나온다.

in 연산자는 object 자료에서만 사용할 수 있다.

in을 사용할 수 있는 조건은 교집합이 아닌 속성이 있을때 이다.

 

 

 

반응형