[typescript] 타입 가드를 사용한 유니온 타입의 세분화

이번에는 TypeScript에서 유니온 타입을 좀 더 세분화하여 사용하는 방법을 알아보겠습니다.

유니온 타입 (Union Types) 이란?

유니온 타입은 두 가지 이상의 타입을 하나로 결합할 수 있는 TypeScript의 기능입니다. 예를 들어, number | string은 숫자 또는 문자열 타입을 가질 수 있는 변수를 선언할 때 사용됩니다.

타입 가드 (Type Guard)란?

타입 가드는 특정 타입으로의 타입 단언을 가능하게 해주는 TypeScript의 기능입니다. 이를 통해 유니온 타입을 보다 세분화하여 정확한 타입 단언을 할 수 있습니다.

typeof 타입 가드

function logMessage(value: string | number) {
  if (typeof value === 'string') {
    console.log(value.length); // 여기서 value는 string 타입으로 추론됨
  } else {
    console.log(value.toFixed(2)); // 여기서 value는 number 타입으로 추론됨
  }
}

instanceof 타입 가드

class Animal { 
  swim: string = '';
}

class Bird extends Animal {
  fly: string = '';
}

function getPet(): Bird | Animal {
  return Math.random() > 0.5 ? new Bird() : new Animal();
}

let pet = getPet();
if (pet instanceof Bird) {
  console.log(pet.fly);
} else {
  console.log(pet.swim);
}

장점

결론

타입 가드를 사용하면 유니온 타입을 더욱 효과적으로 활용할 수 있으며, 코드의 안정성을 높일 수 있습니다.

참고: TypeScript 공식 문서