inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

타입스크립트 입문 - 기초부터 실전까지

유니온 타입과 인터섹션 타입의 차이점

함수 반환 타입에서 유니온 타입에 대한 질문이 있습니다

해결된 질문

415

whomi

작성한 질문수 5

1

타입을 유니온 타입으로 선언할 경우,
해당 타입은 A, B 타입의 교차 속성에만 접근 가능한 것으로 이해하고 있습니다

그래서

function fn(): string | number {
  // do something
}

const val = fn();
val.toFixed(2) // type error

에서

val 의 타입이 string과 number의 교차 속성만을 가진 타입이라서 toFixed가 타입 오류를 내는 것으로 이해하고 있습니다.

질문 드리고 싶은 것은,

특정 함수가 A 타입인 값이나 또는 B 타입인 값을 반환할 수 있다고 가정할 경우,
반환된 값을 변수에 할당하여 사용할 때 A 타입의 모든 속성 또는 B 타입의 모든 속성에 접근 할 수 있도록 하고자 한다면

반환 타입을 어떻게 선언해야 하는지 궁금합니다.

단순히 or 로 생각해서 유니온타입을 설정하면 교차 속성에만 접근이 되니 타입 오류가 발생하게 되어 어떻게 해야 할지 모르겠습니다.

es6 typescript javascript

답변 1

0

캡틴판교

안녕하세요, 좋은 질문 주셨네요 :) 먼저 질문하신 맥락에서 가장 일반적인 경우를 말씀 드리면 const val의 타입을 강의 뒤쪽에서 배우는 타입 가드를 이용하여 원하는 타입으로 걸러낸 후에 필요한 내장 API나 속성을 사용하시는게 좋습니다.

그리고 "반환된 값을 변수에 할당하여 사용할 때 A 타입의 모든 속성 또는 B 타입의 모든 속성에 접근 할 수 있도록 하고자 한다면" 에 대한 답은 &을 사용하시면 되는데 그럼 원하시는 방향으로 함수를 작성하시기 어려울 거예요 :)

TSLint

0

67

1

vscode eslint server 오류

0

82

1

안녕하세요. 기본타입- 튜플, 객체, 진위값 부분의 영상의 화면이 나오질 않습니다.

0

77

1

live server 설치 오류

1

377

2

강의 교안 pdf 는 따로 제공하지않나요?

0

287

2

npm i 설치 이유 문의

1

408

3

index.ts Delete `␍`eslintprettier/prettier 오류(빨간줄) 해결

2

291

3

vue 에서 jquery 사용 문제

1

697

2

TSLint 확장 프로그램은 현재 지원하지 않는다고 합니다.

1

501

2

강의 내용처럼 노란 밑줄이 작동하지 않아서 유사 질문들을 실행해보았는데요

1

544

1

section 3-1 JSdoc 타입이 추론되지 않아서 다음과 같이 수정했는데 이거 맞나요?

1

454

2

함수에 리턴 안됐다고 노란밑줄이 쳐져야하는데 없습니다

2

458

1

파일이 다른데 식별자가 중복되었다고 뜹니다.

1

445

2

빨간줄 에러 질문드립니다

1

489

2

마우스 갖다대면 리턴값 설명 나오는 거 질문드려요

1

358

2

js에서 @ts-check 적어도 체크하지 못하는 문제입니다

2

396

2

index.html에서 타입스크립트 콘솔 찍는 법 질문드립니다

1

567

2

섹션 1-3 추론 질문드립니다

1

356

2

왜 api쪽에는 왜 에러가 안나는지 궁금합니다.

1

326

2

const item1을 선언했을 때 타입을 선언해줘도 괜찮을까요?

1

391

1

전화번호부 타입선언

1

267

2

타입을 전역으로 분리

1

594

2

객체 선언 시 구분자는 쉼표, 세미콜론 모두 사용가능한건가요?

1

460

1

Git 관련 질문이 있습니다

1

672

2