inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

대수 타입

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

75

작성자 없음

작성한 질문수 0

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

gxpk0721

제가 질문드렸는데 너무나도 같은 질문과 답변이 있어서 명쾌하게 해결됐습니다. 감사합니다

1

인프런 AI 인턴

안녕하세요, 인프런 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하나의 타입만 만족시키면 됩니다. 따라서 객체는 두 타입 중 하나로서만 완전히 정의되어 있어야 합니다.

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

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

0

이정환 Winterlood

해결되셨군요 다행입니다 😀

핸드북 light/dark mode 관련 이슈가 있는 것 같습니다.

0

33

1

제네릭 클래스 핸드북 페이지가 undefined라고 나옵니다.

0

33

2

적절한 타입 찾기 React.ChangeEvent<HTMLInputElemen>

0

41

2

outDir 옵션 추가 후 컴파일 오류 질문

0

89

1

호출 시그니처 질문

0

72

2

서로소 유니언 타입이 discriminated union과 동의어 인가요?

0

85

2

조건부타입소개 중 함수오버로딩 활용 시 인수의타입과 함수의 반환값의 타입이 깨지는 문제

0

72

1

할인쿠폰 관련하여

0

170

2

프론트엔드에서의 인터페이스활용

0

103

2

안녕하세요 이정환님!

0

98

1

Node.js 설치에 관한 질문입니다.

0

83

2

함수 타입 호출 시그니처

0

63

1

35강. 모듈 보강은 라이브러리 파일을 직접 편집해야 하나요?

0

70

2

인터페이스 문법이 있는데 타입 별칭 문법은 왜 있나요?

0

122

4

마우스 호버 시 정보

0

100

2

vite으로 리액트 빌드하기를 업데이트해주세요.

1

93

2

타입가드를 만들어 사용하는 이유가 궁금합니다.

0

90

2

섹션 12가 너무 어려운데... 정상이겠죠..?

0

142

2

선생님.. 알고리즘도 강의해주시면안되나요

0

106

2

선생님은 어떻게 이런걸 아세요?

0

137

1

type: module

0

104

2

7:17초 업캐스팅 질문이있습니다!

0

84

1

슈퍼타입질문

1

70

2

프로젝트 설치

0

117

2