[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 함수는 타입 가드를 사용하여 petDog인지 확인하고, 이에 따라 getInfo 함수에서 객체의 속성을 접근 및 메소드를 호출할 때 에러를 방지합니다.

이러한 방식으로 TypeScript는 다중 타입을 가진 객체의 안전한 속성 접근을 보장하고, 코드의 안정성을 높일 수 있습니다.

관련 문서: