인프런 커뮤니티 질문&답변

이설란님의 프로필 이미지
이설란

작성한 질문수

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

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

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

해결된 질문

작성

·

271

2

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

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

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

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

답변 3

1

이설란님의 프로필 이미지
이설란
질문자

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

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

2803-b545bfdab787

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

이설란님의 프로필 이미지
이설란
질문자

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

1

이설란님의 프로필 이미지
이설란
질문자

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

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

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

0

오 안녕하세요 설란님! ㅋㅋ 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

  }

}

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

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

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

이설란님의 프로필 이미지
이설란

작성한 질문수

질문하기