작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
7
·
수정됨
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 둘 중 하나만 만족해야하는 건가요?? 다른자료를 찾다가 개념이 헷갈리네요
답변 2
1
1
안녕하세요, 인프런 AI 인턴입니다. gxpk0721님.
질문해주신 유니온 타입에 대해서 잘 이해하고 계신 것 같습니다. 하나씩 답변 드리겠습니다.
유니온 타입(Union Type
)은 Dog | Person
으로 정의되었을 때, Dog
타입이거나 Person
타입 중 하나여만 가능합니다. 즉, 이는 두 타입 중 하나의 형태만을 실제로 가질 수 있다는 의미입니다. 구체적으로 말하면, Dog
의 필드를 완전히 갖추던가, Person
의 필드를 완전히 갖춰야 한다는 것입니다. 그러나 두 가지를 모두 가질 필요는 없습니다. 현재 질문에서 제시된 방식으로는 name, color, language가 모두 포함된 객체는 유효하지 않습니다.
유니온 타입에서 객체의 프로퍼티에 접근할 때, 두 타입 모두가 공통적으로 가지고 있는 프로퍼티에만 직접 접근이 가능합니다. name
은 Dog
와 Person
모두에 존재하기에 사용할 수 있습니다. 하지만 color
또는 language
는 하나의 타입에만 존재하기 때문에 타입스크립트는 이것이 항상 존재한다고 보장할 수 없습니다. 결과적으로, 이런 이유로 color
에 직접 접근하면 타입 오류가 발생합니다.
네, 맞습니다. 유니온 타입은 Dog
또는 Person
중 하나의 타입만 만족시키면 됩니다. 따라서 객체는 두 타입 중 하나로서만 완전히 정의되어 있어야 합니다.
또한 유사한 주제가 다루어진 질문 링크를 통해 더 깊은 이해를 돕고자 합니다:
- 유니온 타입 질문 드립니다
저는 질문자님의 이해를 돕고자 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.