[고급타입]Discriminate-Union

트릴로니·2022년 9월 2일
0

타입스크립트

목록 보기
7/9

Discriminate-Union란

  • 유니언 타입을 쓸 때 타입 가드를 쉽게 할 수 있도록 하는 패턴이다.
type Bird {
  type: 'bird';
  flyingSpeed: number;
}

type Horse {
  type: 'horse';
  runningSpeed: number;
}

type Animal = Bird | Horse;

function moveAnimal(animal: Animal){
  let speed;
  switch(animal.type){
    case 'bird':
      speed = animal.flyingSpeed;
      break;
    case 'horse':
      speed = animal.runningSpeed;
  }
  console.log('Moving at speed: ' + speed)
}
  • interface나 class로 타입을 선언하고 type 프로퍼티를 써준다.
  • type 프로퍼티에 number나 string같은 타입이 아닌 정확한 이름을(exact string)을 타입으로 부여한다.
  • 'flyingSpeed'이 프로퍼티에 있는지 확인하기 위해 'flyingSpeed' in animal'으로도 확인할 수 있지만 오타가 날 수도 있고 일일히 확인하는 것이 번거로울 수 있다.

Discriminate-Union과 switch문

  • 앞서 모든 커스텀 객체 타입(Bird, Horse)에 type 프로퍼티에 정확한 값으로 타입을 지정해줬으므로 switch문을 써서 타입가드를 할 수 있다.

0개의 댓글