let someValue: any = 5;
someValue = "hello";
someValue = true; //어떤 값을 할당해도 complie시 문제가 되지 않는다.
let price: number | string = 5;
someValue = "free";
someValue = true; // 지정된 타입이 아니므로 error가 발생한다.
type StrOrNum = number | string;
let price: StrOrNum = 5;
union 타입을 가진 변수를 타입이 없는 변수에 할당하려고 할 때 error가 발생하는데 이 때 코드의 검증을 수행하기 위해 방법을 말한다.
// type guard 방법 중 하나로 typeof 연산자와 조건문을 사용하는 방법이 있다.
type StringOrNum = string | number;
let itemPrice: number;
const setItemPrice = (price: StringOrNum):void => {
if (typeof price === "string") {
itemPrice = 0;
} else {
itemPrice = price;
}
}
setItemPrice(50);
출처: YOUTUBE-땅콩코딩