[typescript] 다중 타입을 사용하여 객체의 속성 접근시 에러를 방지하는 방법은 무엇인가요?
type Dog = {
name: string;
breed: string;
woof: () => void;
};
type Cat = {
name: string;
breed: string;
meow: () => void;
};
function isDog(pet: Dog | Cat): pet is Dog {
return (pet as Dog).woof !== undefined;
}
function getInfo(pet: Dog | Cat) {
console.log(pet.name);
console.log(pet.breed);
if (isDog(pet)) {
pet.woof();
} else {
pet.meow();
}
}
const myPet: Dog = {
name: "Buddy",
breed: "Golden Retriever",
woof: () => {
console.log("Woof woof!");
},
};
getInfo(myPet);
위의 코드에서 isDog
함수는 타입 가드를 사용하여 pet
이 Dog
인지 확인하고, 이에 따라 getInfo
함수에서 객체의 속성을 접근 및 메소드를 호출할 때 에러를 방지합니다.
이러한 방식으로 TypeScript는 다중 타입을 가진 객체의 안전한 속성 접근을 보장하고, 코드의 안정성을 높일 수 있습니다.
관련 문서:
- https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types