작성
·
10
0
안녕하세요 덕분에 타입스크립트에 개념에 잡혀가고있는 와중에 제가 배운 개념을 정확하게 이해했는지가 궁금합니다.
1. 구조적 타이피이라는것은 구조가 같으면 서로 호환된다 즉 타입 이름이 달라도 같은 타입이라고 본다. (상하관계도 호환가능) 구조적으로 포함하고 있다면
2. 변수에 :타입 이렇게 적고 실제 에는 해당 타입보다 더 많은 속성을 넣고 그 추가적인 프로퍼티에 오류가 난다. 이유는 변수의 타입에 있는 속성으로만 접근이 가능하기때문이다.
(구조적 타이핑에 의하여 변수에 담을 순 있지만 값의 해당하는 프로퍼티에 접근하는건 변수의 타입 기준이기때문에 오류가난다. )
예시
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. gxpk0721님.
타입스크립트에서 구조적 타이핑과 유니온 타입에 대한 개념을 잘 잡아가고 계신 것 같습니다. 질문에서 말씀하신 내용을 바탕으로 몇 가지 핵심 개념을 정리해 드리겠습니다.
구조적 타이핑 (Structural Typing): 타입스크립트는 구조적 타이핑 시스템을 사용하고 있기 때문에, 객체의 타입이 다른 객체의 타입을 포함하게 되면 두 객체는 같은 타입으로 간주됩니다. 즉, 변수에 할당되는 객체가 받아들이는 타입보다 더 많은 프로퍼티를 가질 수 있습니다. 이런 경우 프로퍼티 접근은 변수의 타입에 정의된 프로퍼티만 접근 가능하게 됩니다.
프로퍼티 접근 제한: 예를 들어, type Computer = { name: string; skills: string; }
로 정의된 타입이 있을 때, computer
변수가 Computer
타입을 갖습니다. superComputer
가 추가적인 프로퍼티인 superSkills
를 가진다고 해도 computer
에 할당될 수 있습니다. 그러나 computer.superSkills
에 접근하면 오류가 발생합니다. 왜냐하면 computer
변수의 타입(Computer
)에 superSkills
가 정의되어 있지 않기 때문입니다.
타입 안정성: 타입스크립트는 변수에 할당된 값의 타입이 선언된 타입과 일치하는지를 검사하여 코드의 안전성을 보장합니다. 따라서 선언된 타입에 존재하지 않는 프로퍼티에 대한 접근은 컴파일 오류로 이어집니다.
귀하의 코드 예시에서 computer.superSkills
에 접근하면 컴파일 오류가 발생할 것입니다. 또한, skils
라는 프로퍼티가 Computer
타입에 존재하지 않으므로 이 부분도 동일하게 오류가 발생할 수 있습니다. “skills”로 수정이 필요합니다.
관련 질문에 대해 좀 더 자세히 알아보고자 하신다면, 유사한 질문을 다룬 게시물을 추천드립니다:
- 객체 타입의 호환성에 대한 이해
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.