더북(TheBook)

else문에서 타입이 never가 되는 것에 주목하세요. paramstring 또는 number 타입인데 else문에서는 stringnumber도 아니므로 never가 됩니다. 이렇게 타입스크립트가 코드를 파악해서 타입을 추론하는 것을 제어 흐름 분석(Control Flow Analysis)이라고 부릅니다. 다만 제어 흐름 분석이 완벽하지는 않다는 것을 염두에 두고 활용해야 합니다.

항상 typeof를 사용할 수 있는 것은 아닙니다. 따라서 다양한 타입 좁히기 방법을 알아두어야 합니다. 먼저 nullundefined를 구분해봅시다.

function strOrNullOrUndefined(param: string | null | undefined) {
  if (typeof param === 'undefined') {
    param;
  } else if (param) {
    param;
  } else {
    param;
  }
}
// (parameter) param: undefined
// (parameter) param: string
// (parameter) param: string | null
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.