강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

gxpk0721님의 프로필 이미지
gxpk0721

작성한 질문수

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

객체 타입의 호환성

유니온타입의개념 및 프로퍼티 접근

작성

·

10

0

안녕하세요 덕분에 타입스크립트에 개념에 잡혀가고있는 와중에 제가 배운 개념을 정확하게 이해했는지가 궁금합니다.


1. 구조적 타이피이라는것은 구조가 같으면 서로 호환된다 즉 타입 이름이 달라도 같은 타입이라고 본다. (상하관계도 호환가능) 구조적으로 포함하고 있다면


2. 변수에 :타입 이렇게 적고 실제 에는 해당 타입보다 더 많은 속성을 넣고 그 추가적인 프로퍼티에 오류가 난다. 이유는 변수의 타입에 있는 속성으로만 접근이 가능하기때문이다.

(구조적 타이핑에 의하여 변수에 담을 순 있지만 값의 해당하는 프로퍼티에 접근하는건 변수의 타입 기준이기때문에 오류가난다. )
예시

image.png



답변 1

0

안녕하세요, 인프런 AI 인턴입니다. gxpk0721님.

타입스크립트에서 구조적 타이핑과 유니온 타입에 대한 개념을 잘 잡아가고 계신 것 같습니다. 질문에서 말씀하신 내용을 바탕으로 몇 가지 핵심 개념을 정리해 드리겠습니다.

  1. 구조적 타이핑 (Structural Typing): 타입스크립트는 구조적 타이핑 시스템을 사용하고 있기 때문에, 객체의 타입이 다른 객체의 타입을 포함하게 되면 두 객체는 같은 타입으로 간주됩니다. 즉, 변수에 할당되는 객체가 받아들이는 타입보다 더 많은 프로퍼티를 가질 수 있습니다. 이런 경우 프로퍼티 접근은 변수의 타입에 정의된 프로퍼티만 접근 가능하게 됩니다.

  2. 프로퍼티 접근 제한: 예를 들어, type Computer = { name: string; skills: string; }로 정의된 타입이 있을 때, computer 변수가 Computer 타입을 갖습니다. superComputer가 추가적인 프로퍼티인 superSkills를 가진다고 해도 computer에 할당될 수 있습니다. 그러나 computer.superSkills에 접근하면 오류가 발생합니다. 왜냐하면 computer 변수의 타입(Computer)에 superSkills가 정의되어 있지 않기 때문입니다.

  3. 타입 안정성: 타입스크립트는 변수에 할당된 값의 타입이 선언된 타입과 일치하는지를 검사하여 코드의 안전성을 보장합니다. 따라서 선언된 타입에 존재하지 않는 프로퍼티에 대한 접근은 컴파일 오류로 이어집니다.

귀하의 코드 예시에서 computer.superSkills에 접근하면 컴파일 오류가 발생할 것입니다. 또한, skils라는 프로퍼티가 Computer 타입에 존재하지 않으므로 이 부분도 동일하게 오류가 발생할 수 있습니다. “skills”로 수정이 필요합니다.

관련 질문에 대해 좀 더 자세히 알아보고자 하신다면, 유사한 질문을 다룬 게시물을 추천드립니다:
- 객체 타입의 호환성에 대한 이해

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

gxpk0721님의 프로필 이미지
gxpk0721

작성한 질문수

질문하기