[TypeScript] 객체 타입의 호환성

kjy0124·2026년 2월 16일
post-thumbnail

🎯 객체 타입 호환성

❓ 어떤 객체 타입을 다른 객체 타입으로 취급해도 괜찮은가?

type Animal = {
  name: string;
  color: string;
};

type Dog = {
  name: string;
  color: string;
  breed: string;
};
let animal: Animal = {
  name: "기린",
  color: "yellow",
};

let dog: Dog = {
  name: "두부",
  color: "white",
  breed: "포메라니안",
};

animal = dog;
dog = animal;
  • 위 코드에서 animal = dog는 문제가 안되었지만
    그 반대로 dog = animal에서는 문제가 발생
  • 이 문제는
    animal = dog은 업캐스팅이고
    dog = animal은 다운캐스팅이기 때문.
  • 조건이 더 적은 타입이 슈퍼타입, 많은 타입은 **서브타입

✅ 초과 프로퍼티 검사

실제 타입에 정의하지 않은 프로퍼티를 작성했을 때 발생

let book3: Book = programmingBook;

function func(book: Book) {}
func({
  name: "TypeScript",
  price: 33000,
  // skill: "typeScript",
});
func(programmingBook);

이처럼 서브 타입 객체를 넣기 위해서는 객체 리터럴을 이용하는게 아닌 변수에 저장해두었다 인수로 변수를 전달해야 함.


출처

한 입 크기로 잘라먹는 타입스크립트
https://www.inflearn.com/course/한입-크기-타입스크립트/dashboard

profile
개발 공부...

0개의 댓글