inflearn logo
강의

Khóa học

Chia sẻ kiến thức

TypeScript từ cơ bản đến thực chiến

Sự khác biệt giữa loại kết hợp và loại giao lộ

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

Đã giải quyết

403

seolranlee

4 câu hỏi đã được viết

2

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

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

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

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

유니온타입 javascript es6 typescript

Câu trả lời 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

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

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