강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của seolranlee
seolranlee

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

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

Viết

·

386

2

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

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

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

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

유니온타입javascriptes6typescript

Câu trả lời 3

1

seolranlee님의 프로필 이미지
seolranlee
Người đặt câu hỏi

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

captain님의 프로필 이미지
captain
Người chia sẻ kiến thức

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

2803-b545bfdab787

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

seolranlee님의 프로필 이미지
seolranlee
Người đặt câu hỏi

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

1

seolranlee님의 프로필 이미지
seolranlee
Người đặt câu hỏi

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

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

captain님의 프로필 이미지
captain
Người chia sẻ kiến thức

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

0

captain님의 프로필 이미지
captain
Người chia sẻ kiến thức

오 안녕하세요 설란님! ㅋㅋ 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 연산자를 사용해서 분기처리를 했는데, 
인터페이스를 유니온 타입으로 묶었을 때는 함수 내에서 분기처리를 해서 사용할 수가 있나요?

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

Hình ảnh hồ sơ của seolranlee
seolranlee

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

Đặt câu hỏi