강의

멘토링

로드맵

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

작성자 없음

작성자 정보가 삭제된 글입니다.

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

대수 타입

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

작성

·

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님.

질문해주신 유니온 타입에 대해서 잘 이해하고 계신 것 같습니다. 하나씩 답변 드리겠습니다.

질문 1. 유니온 타입이 온전히 Dog이던가 / 온전히 Person이던가 / 둘 다 포함된 객체이다.

유니온 타입(Union Type)은 Dog | Person으로 정의되었을 때, Dog 타입이거나 Person 타입 중 하나여만 가능합니다. 즉, 이는 두 타입 중 하나의 형태만을 실제로 가질 수 있다는 의미입니다. 구체적으로 말하면, Dog의 필드를 완전히 갖추던가, Person의 필드를 완전히 갖춰야 한다는 것입니다. 그러나 두 가지를 모두 가질 필요는 없습니다. 현재 질문에서 제시된 방식으로는 name, color, language가 모두 포함된 객체는 유효하지 않습니다.

질문 2. name은 접근이 가능한데 왜 color는 접근이 안되는지?

유니온 타입에서 객체의 프로퍼티에 접근할 때, 두 타입 모두가 공통적으로 가지고 있는 프로퍼티에만 직접 접근이 가능합니다. nameDogPerson 모두에 존재하기에 사용할 수 있습니다. 하지만 color 또는 language는 하나의 타입에만 존재하기 때문에 타입스크립트는 이것이 항상 존재한다고 보장할 수 없습니다. 결과적으로, 이런 이유로 color에 직접 접근하면 타입 오류가 발생합니다.

질문 3. 유니온 타입은 Dog 또는 Person 둘 중 하나만 만족해야 하는 것인가요?

네, 맞습니다. 유니온 타입은 Dog 또는 Person하나의 타입만 만족시키면 됩니다. 따라서 객체는 두 타입 중 하나로서만 완전히 정의되어 있어야 합니다.

또한 유사한 주제가 다루어진 질문 링크를 통해 더 깊은 이해를 돕고자 합니다:
- 유니온 타입 질문 드립니다

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

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기