본문 바로가기
프로그래밍/typescsript

타입스크립트의 유니온 / 인터섹션 타입

by 한코코 2022. 11. 23.

유니온 타입

자바스크립트의 OR 연산자(||)와 같이 A이거나 B이다 라는 의미의 타입이다.

function logText(text: string | number) {...}

 

 

 

인터섹션 타입

인터섹션 타입(Intersection Type)은 여러 타입을 모두 만족하는 하나의 타입을 말한다.

interface Person {
  name: string;
  age: number;
}
interface Developer {
  name: string;
  skill: number;
}
type Capt = Person & Developer;

인터페이스의 타입 정의를 & 연산자를 사용해서 합친 후 Capt이라는 타입에 할당한 코드다.

Capt 타입은 아래 코드와 같다.

{
  name: string;
  age: number;
  skill: string;
}

 

 

 

유니온 타입 주의점 (클릭시 이동)

타입스크립트 관점에서 introduce()함수를 호출하는 시점에 Person타입이 올지 Developer타입이 올지 알 수 없기 때문에 어느 타입이 들어오든 간에 오류가 나지 않는 방향으로 추론하게 된다. 즉 ||(합집합)이 아니라 &&(교집합)인 원소들을 받아들이는것.

 

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

function introduce(someone: Person | Developer) {
  someone.name; // O 정상 동작
  someone.age; // X 타입 오류
  someone.skill; // X 타입 오류
}

댓글