타입 좁히기 - 타입스크립트 이해하기
/**
* 타입 좁히기
* 조건문 등을 이용해 넓은타입에서 좁은타입으로
* 타입을 상황에[ 따라 좁히는 방법을 이야기
*/
type Person = {
name: string;
age: number;
};
// value => number : toFixed
// value => string : toUpperCase
// value => Date : getTime
// value => Person : name은 age살 입니다.
function func(value: number | string | Date | null | Person){
value;
// value.toUpperCase(); 에러
// value.toFixed(); 에러
if(**typeof value === 'number'**){
console.log(value.toFixed())
}
else if(typeof value === 'string'){
console.log(value.toUpperCase())
}
else if (**value instanceof Date**){ // 해당 객체가 맞는지 확
console.log(value.getTime())
}
// else if(value instanceof Person){ // 여기서 타입이 오면 안됨 (객체만 가능)
// }
else if(**value && "age" in value**){ // value가 null일 수도 있다는것을 방지하고 age가 value에 있냐?를 판단
console.log(`${value.name}은 ${value.age}살 입니다.`)
}
}