inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

안녕하세요 유니온 타입 질문 드립니다.

221

김주현

작성한 질문수 13

1

위 코드를 보면 function 부분에서는 빨간 줄로 오류가 발생합니다. 제가 강의를 보며 이전 강의에서는 유니온 연산일 경우에는 

각 인터페이스의 공통된 값만 사용 할 수 있다고 들었는데요

이제 직접 askSomeone 함수를 이용하여 타입에 맞게 파라미터를 부여할 경우에는 오류가 발생하지 않나요? 

함수를 사용할 때도 원래는 name 만 받아 사용 할 수 있어야 하는 것 아닌가 싶어서 질문드립니다!

 

es6 typescript javascript

답변 1

0

캡틴판교

안녕하세요 주현님, 본문에 첨부해 주신 이미지에서 에러가 나는 이유는 askSomeone() 함수의 someone 파라미터가 어떤 객체를 받을 지 모르기 때문에 Developer3과 Person3에 공통으로 접근할 수 있는 속성만 안전하게 접근해 주기 때문입니다. 이후에 배우는 타입 가드 개념을 섞어서 특정 라인에서 해당 타입으로 추론하시면 skill이나 age에 접근해도 에러가 안날 거예요.

코드는 아래 코드 참고하세요.

interface Person {
name: string;
age: number;
}

interface Developer {
name: string;
skill: string;
}

function isPerson(target: Person | Developer): target is Person {
return (target as Person).age !== undefined;
}

function askSomeone(someone: Person | Developer) {
if (isPerson(someone)) {
someone.age;
}
if (!isPerson(someone)) {
someone.skill;
}
}

TSLint

0

77

1

vscode eslint server 오류

0

97

1

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

0

87

1

live server 설치 오류

1

400

2

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

0

294

2

npm i 설치 이유 문의

1

431

3

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

2

303

3

vue 에서 jquery 사용 문제

1

711

2

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

1

511

2

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

1

553

1

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

1

465

2

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

2

463

1

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

1

461

2

빨간줄 에러 질문드립니다

1

499

2

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

1

367

2

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

2

406

2

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

1

579

2

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

1

362

2

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

1

334

2

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

1

404

1

전화번호부 타입선언

1

276

2

타입을 전역으로 분리

1

604

2

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

1

462

1

Git 관련 질문이 있습니다

1

674

2