/**
* 사용자 정의 타입가드
*/
type Dog = {
name: string;
isBark: boolean;
}
type Cat = {
name : string;
isScratch: boolean;
};
type Animal = Dog | Cat;
function isDog(animal: Animal):animal is Dog{ // 반환값이 true이면 animal은 Dog타입 이라고 명시
return (animal as Dog).isBark !== undefined
}
function isCat(animal:Animal): animal is Cat{
return (animal as Cat).isScratch !== undefined
}
function warning(animal: Animal){
if(isDog(animal)){
// 강아지
animal
} else if("isScratch" in animal){
// 고양이
}
}