[ TypeScript ] Intersection Type

한대희·2023년 5월 27일
0

TypeScript

목록 보기
8/13
post-thumbnail

InterSection Type

  • & 기호를 사용하여 타입을 묶어 주면 해당 타입들의 교집합이 되는 타입이 지정이 된다.
  • 그런데 생각해 보면 타입들 간에 교집합이 있나? 라는 의문이 든다.
  • 예를 들어 number 타입과 string타입은 교집합이 없다.따라서 number & string 타입은 결국 never타입으로 추론되게 된다.

// 변수에 number와 string타입의 교집합에 해당 하는 타입을 지정 하였기 때문에 never 타입으로 추론된다
let var1 : number & string; 
  • 따라서 Intersection 타입은 보통 객체 타입들에 사용 된다.
  • 여러가지 객체 타입들을 &로 묶어 주면 묶어 준 객체 타입들의 프로퍼티를 모두 포함 해야 한다.

type A = {
  name: string;
  age: number;
};

type B = {
  name: string;
  height: number;
};

// 😀 intersection type을 만들었다.
type Union = A & B;

// 🔥 B type에만 있는 height가 빠졌기 때문에 에러가 난다
let User: Union = {
  name: 'hdh',
  age: 30
}

// 🔥 A type에만 있는 age가 빠졌기 때문에 에러가 난다
let User2: Union = {
  name: 'hdh',
  height: 180
}   

// 😀 묶어준 타입들의 모든 프로퍼티를 포함해야 한다.
let User3: Union = {
  name: 'hdh',
  age: 30,
  height: 180
}
profile
개발 블로그

0개의 댓글