inflearn logo
강의

講義

知識共有

TypeScript入門 - 基礎から実践まで

ユニオンタイプとインターセクションタイプの違い

askSomeone 함수의 파라미터를 유니온 타입으로 작성했을 때

解決済みの質問

403

seolranlee

投稿した質問数 4

2

askSomeone 함수의 somone 파라미터를 유니온 타입(Developer | Person)으로 작성하고 해당 함수를 호출 할 때

askSomeone({ name: ‘디벨로퍼‘, skill: ‘웹 개발’,  age: 34})

로도 파라미터 주입이 가능한데요.

타입 구조체에 유니온 타입을 적용하게 될 경우 보장된 타입(공통된 타입)만 추론 가능한 것으로 이해했는데, Developer의 타입 구조체에 Person 타입 구조체의 속성인 age가 결합이 되어도 되는 건가요?

유니온타입 javascript es6 typescript

回答 3

1

seolranlee

기효님 ㅠㅠ과찬이세요ㅠㅠ 배워갈수록 부족함을 더 많이 느끼고 있답니다
기효님을 업계에서 만나게 된다면 저에겐 큰 기쁨일거예요 ㅎㅎ
어머.. 네! 저 아직 TS2 결제 전입니다. 쿠폰 주시면 저는 너무 감사하죠ㅠㅠ..!
여러모로 감사합니다 기효님ㅠㅡㅠ

0

captain

에이.. 설란님 넘 겸손하세요 ㅋㅋ 사기캐시면서... 아래 쿠폰 사용해서 결제하시면 유데미보다 싸게 사실 수 있을거예요... ㅋㅋㅋ

2803-b545bfdab787

그럼 재밌게 학습하시고 시간 되실 때 수강평도 잘 남겨주시길 부탁드리겠습니다 :)

0

seolranlee

ㅎㅎ감사합니다!
그럼요 ㅎㅎ 영혼 가득 담은 수강평으로 찾아뵙겠습니다 ㅎㅎ
언제나 좋은 강의 제공해주셔서 감사합니다(__)

1

seolranlee

ㅎㅎ저를 기억해주시고 계시다니ㅠㅡㅠ..! 감동입니다.
네 이렇게 친절한 답변을 보니 이해가 갑니다..!
유니온이 의외로 햇갈리는 포인트들이 몇가지 있네요

믿고 보는 기효님 강좌로 TS 파트2까지 열심히 달려보겠습니다 ㅎㅎ

0

captain

설란님은 그 때 수업 들으실 때도 보면 굉장히 명석하시고 엔지니어적 사고가 높으셨던 걸로 기억해요 ㅋㅋ 오프라인 수업에서도 질문이 날카로웠는데 역시... ㅋㅋ 업계가 좁아서 조만간 또 만나실 수 있지 않을까요? :) TS 파트 2는 아직 결제 안하셨으면 제가 쿠폰 드릴까요? :)

0

captain

오 안녕하세요 설란님! ㅋㅋ TS 강의 듣고 계시는 군요.. ㅋㅋ 역시 날카로운 질문을 주시네요... :)

askSomeone() 함수의 파라미터는 Developer와 Person을 모두 취급하는 유니온 타입이기 때문에 함수를 호출하는 시점에서는 두 타입의 속성들을 다 넘길 수 있습니다. 보장된 타입(속성)만 추론된다는 부분은 함수 안에서의 규칙이라고 보시면 될 것 같아요. 유니온이 좀 헷갈리죠... 아래 케이스를 생각해보시면 아마 이해하시기가 수월하실 수도 있을 것 같습니다 :)

// 문자열과 숫자를 유니온 타입으로 묶었을 때

function askSomeone(someone: 'a' | 100) { ... }

askSomeone('a'); // O

askSomeone(100); // O

// 타입 추론 결과

function askSomeone(someone: 'a' | 100) {

  if (typeof someone === 'string') {

    console.log(someone); // 'a'

  }

  if (typeof someone === 'number') {

    console.log(someone); // 100

  }

}

0

xiubin

안녕하세요 강사님, 해당 답변을 보고 질문이 있어 이렇게 글을 남깁니다.

위 예시는 문자열과 숫자를 유니온 타입으로 묶었기 때문에 typeof 연산자를 사용해서 분기처리를 했는데, 
인터페이스를 유니온 타입으로 묶었을 때는 함수 내에서 분기처리를 해서 사용할 수가 있나요?

함수 내에서는 불가능하고 '타입가드'를 활용해서 한 번 더 함수를 감싸준 후에 분기 처리하여 사용해야하나요?

TSLint

0

67

1

vscode eslint server 오류

0

82

1

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

0

77

1

live server 설치 오류

1

375

2

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

0

287

2

npm i 설치 이유 문의

1

407

3

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

2

290

3

vue 에서 jquery 사용 문제

1

697

2

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

1

501

2

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

1

544

1

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

1

454

2

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

2

457

1

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

1

445

2

빨간줄 에러 질문드립니다

1

489

2

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

1

358

2

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

2

395

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