[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 공식 문서