TypeScript에서 특정 타입인지 여부를 판별하는 함수로,
반환 타입을 animal is Dog 같은 형태로 지정하여 타입을 좁히는 역할을 한다.
이를 통해 조건문 내에서 올바른 타입 추론이 가능해진다.
type Dog = {
name: string;
isBark: boolean;
};
type Cat = {
name: string;
isScratch: boolean;
};
type Animal = Dog | Cat;
function warning(animal: Animal) {
if ("isBark" in animal) {
console.log("강아지입니다.");
} else if ("isScratch" in animal) {
console.log("고양이입니다.");
}
}
animal is Dog과 같이 반환 타입을 지정하여 타입을 좁힌다.// 사용자 정의 타입 가드
function isDog(animal: Animal): animal is 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) {
// 고양이
}
}