언어/TypeScript

객체 타입의 호환성

calendar2 2024. 8. 13. 17:25

앞서 타입 계층도에 대해 설명했다. 더 상위 타입은 하위 타입에서의 업 캐스팅이 가능하며, 상위 타입에서 하위 타입으로의 다운 캐스팅은 불가능하다.

그리고 이러한 특징은 객체 타입에서도 똑같이 적용된다. 예시를 보자.

객체 타입의 호환성

 

코드를 보면 animal에 dog를 할당하는 것은 문제없지만, dog에 animal을 할당할 때는 에러가 발생한다.

Dog 타입에 존재하는 breed가 Animal 타입에는 없기에 발생하는 것이다. 따라서, Animal 타입이 Dog 타입에 비해 더 상위 타입인 슈퍼타입이 되며 Dog 타입을 Animal 타입에 할당하는 업 캐스팅은 가능하지만, 그 반대인 다운 캐스팅은 불가능하게 된다.

객체의 초과 프로퍼티 검사

위에서 보듯 animal 변수에 dog 변수에 할당은 업 캐스팅이라 가능했다. 그런데 한 가지 의문점이 생긴다. 아래 코드를 보자.

초과 프로퍼티 검사

 

아까 dog 변수와 똑같은 값을 Animal 타입인 animal2 변수에 할당하고 있는데 이 경우에는 에러가 발생하고 있다.

이는 객체가 가진 프로퍼티 구조로 인해 발생하는 객체의 초과 프로퍼티 검사 오류이다.

정리

  • 객체는 프로퍼티 구조를 가진다.
  • 프로퍼티 구조로 초과 프로퍼티 검사 과정이 존재한다.
  • 프로퍼티가 더 많은 객체를 프로퍼티가 더 적은 객체에 할당할 수 있다.(타입스크립트의 타입 계층으로 인해)

이러한 특성으로 인해 객체 구조는 다음과 같은 코드 작성이 가능하다.

종합 정리

참고자료

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

 

한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런

이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻‍♀️로 만들어드립니다., 프론

www.inflearn.com

 

'언어 > TypeScript' 카테고리의 다른 글

타입 추론  (0) 2024.08.15
대수 타입  (0) 2024.08.13
타입의 계층  (0) 2024.08.12
타입스크립트의 타입 (2)  (0) 2024.08.09
타입스크립트의 타입 (1)  (0) 2024.08.08