inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

서로소 유니온 타입

질문

해결된 질문

98

Milkyway

작성한 질문수 35

0

서로소 유니언 타입에 대한 질문이 있습니다.

 

저 tag 값으로 구분 하는건 결국 API에서 저 tag 값을 내려줘야 구분 가능한거죠? 예를 들어 3개의 비슷하지만 조금 다른 구조의 타입이 있을때 각각 타입으로 정의하고 거기에 임의로 tag를 붙이거나 하는 식으론 구분 못하고 그 조금 다른 부분을 이용해 따로 tag 값을 넣어주던가 해야 구분이 되는 것으로 이해 했는데 맞을까요??

 

감사합니다.

typescript

답변 2

0

이정환 Winterlood

안녕하세요 이정환입니다.

API Response의 타입을 정의하는 상황이라면 그렇습니다. 데이터베이스 테이블을 설계 할 때 보통 type이나 tag 등의 컬럼(필드)가 포함되기에 보통은 제공되는 필드를 사용해 서로소 유니온 타입으로 구별하게 됩니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. Milkyway님.

서로소 유니언 타입에 관한 질문 감사합니다. TypeScript에서 서로소 유니언 타입(discriminated union type)은 각각의 타입에 고유한 속성(일반적으로 tag 또는 type 같은 속성)을 추가하여 구분하는 방식입니다. 이 방식은 타입 간의 구분을 명확히 하고, 컴파일러가 어떤 타입이 어떤 경우에 해당하는지를 정확하게 이해할 수 있도록 돕습니다.

질문에서 말씀하신 것처럼, API에서 이러한 tag 값을 제공해야 프론트엔드에서 각 응답 유형을 구분하고 적절히 처리할 수 있습니다. 다시 말씀드리면:

  1. API에서 tag 값 제공: 서로소 유니언 타입을 활용하려면 API가 각 객체에 구분할 수 있는 tag 값을 포함해 주어야 합니다. 이를 통해 프론트엔드가 응답을 기반으로 적절한 로직을 구현할 수 있습니다.

  2. 기존 유형 구분: 구조가 조금 다른 타입들이 있다면, 서로소 유니언 타입을 정의할 때, 각 타입의 고유 속성을 기반으로 구분할 수도 있습니다. 하지만, 이 경우 특정 속성이 모든 타입에 걸치는 저명한 구분자 역할을 하지 못하면 tag를 사용하는 것이 안전합니다.

  3. 안전하고 명확한 로직 구현: 각 타입에 고유한 tag 또는 속성이 있으면, 개발자는 해당 속성 값에 따라 코드를 분기하여 각기 다른 로직을 안전하게 구현할 수 있습니다.

관련된 유사한 질문과 답변이 이미 게시판에 있어서 도움이 될 수 있는 링크를 추천드립니다:

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

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

0

22

2

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

0

58

1

호출 시그니처 질문

0

64

2

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

0

74

2

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

0

65

1

할인쿠폰 관련하여

0

154

2

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

0

92

2

안녕하세요 이정환님!

0

90

1

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

0

79

2

함수 타입 호출 시그니처

0

56

1

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

0

63

2

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

0

115

4

마우스 호버 시 정보

0

91

2

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

1

89

2

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

0

82

2

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

0

136

2

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

0

100

2

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

0

128

1

type: module

0

97

2

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

0

75

1

슈퍼타입질문

1

62

2

프로젝트 설치

0

103

2

enum은 비원시 타입이면서 열거형 타입이 되는건가요?

0

68

2

함수는 함수타입? 객체타입??

1

94

2