사용자 정의 타입가드 - 함수와 타입

/**
 * 사용자 정의 타입가드
 */

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){
        // 고양이
    }
}