typeof를 사용할 때는 typeof의 대상이 변수이어야 제대로 작동한다.
다음과 같은 함수가 있다고 가정하자.
const numOrUndefined = (year: number): number | undefined => {
if (number % 2) {
return number;
} else {
return undefined;
}
}
What not to do
if (typeof numOrDefined(2021) === "number") { // TypeScript Error, numOrDefined type is not set console.log(numOrDefined(2021) + 1); } else { console.log("Even year"); }
What to do
const yearResult = numOrDefined(2021); if (typeof yearResult === "number") { console.log("Odd year"); } else { console.log("Even year"); }
Why? 값을 변수에 담아놓지 않으면 타입이 정해져있지 않아서 앞서 검사를 했더라도 타입이 정해져있지 않기 때문