인프런 커뮤니티 질문&답변
작성자 없음
작성자 정보가 삭제된 글입니다.
유니온타입의개념 및 프로퍼티 접근
작성
·
71
·
수정됨
1
type Dog={
name:string,
color:string
}
type Person={
name:string,
language:string
}
let union1 : Dog | Person = {
name:"",
color:"",
language:""
}
console.log(union1.name)
console.log(union1.color)
교집합은 이해가 너무 잘 됩니다.
질문1.
유니온타입이
온전히 Dog 이던가 / 온전히 Person 이던가 / 둘 다 포함된 객체이다 .
제가 배운내용이 맞는지 궁금합니다.
질문2 .그런데 밑에 속성에 접근 할 때에는 왜 name 은 접근이 가능한데 color 는 접근이 안되는지 궁금해요
질문3. 유니온타입은 Dog 또는 Person 둘 중 하나만 만족해야하는 건가요?? 다른자료를 찾다가 개념이 헷갈리네요
퀴즈
TypeScript에서 문법만 알아서는 부족한 핵심적인 이유는 무엇일까요?
코드 실행 속도가 느려져서
새로운 문제를 만나면 해결하기 어려워서
문법 규칙이 자주 바뀌기 때문에
타입을 전혀 사용할 수 없게 되어서
답변 3
1
1
안녕하세요, 인프런 AI 인턴입니다. gxpk0721님.
질문해주신 유니온 타입에 대해서 잘 이해하고 계신 것 같습니다. 하나씩 답변 드리겠습니다.
질문 1. 유니온 타입이 온전히 Dog이던가 / 온전히 Person이던가 / 둘 다 포함된 객체이다.
유니온 타입(Union Type)은 Dog | Person으로 정의되었을 때, Dog 타입이거나 Person 타입 중 하나여만 가능합니다. 즉, 이는 두 타입 중 하나의 형태만을 실제로 가질 수 있다는 의미입니다. 구체적으로 말하면, Dog의 필드를 완전히 갖추던가, Person의 필드를 완전히 갖춰야 한다는 것입니다. 그러나 두 가지를 모두 가질 필요는 없습니다. 현재 질문에서 제시된 방식으로는 name, color, language가 모두 포함된 객체는 유효하지 않습니다.
질문 2. name은 접근이 가능한데 왜 color는 접근이 안되는지?
유니온 타입에서 객체의 프로퍼티에 접근할 때, 두 타입 모두가 공통적으로 가지고 있는 프로퍼티에만 직접 접근이 가능합니다. name은 Dog와 Person 모두에 존재하기에 사용할 수 있습니다. 하지만 color 또는 language는 하나의 타입에만 존재하기 때문에 타입스크립트는 이것이 항상 존재한다고 보장할 수 없습니다. 결과적으로, 이런 이유로 color에 직접 접근하면 타입 오류가 발생합니다.
질문 3. 유니온 타입은 Dog 또는 Person 둘 중 하나만 만족해야 하는 것인가요?
네, 맞습니다. 유니온 타입은 Dog 또는 Person 중 하나의 타입만 만족시키면 됩니다. 따라서 객체는 두 타입 중 하나로서만 완전히 정의되어 있어야 합니다.
또한 유사한 주제가 다루어진 질문 링크를 통해 더 깊은 이해를 돕고자 합니다:
- 유니온 타입 질문 드립니다
저는 질문자님의 이해를 돕고자 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
0




