[typescript] 타입 가드를 활용하여 다중 타입을 처리하는 방법을 알려주세요.
타입스크립트(TypeScript)에서는 다양한 유형의 값을 처리할 수 있도록 타입 가드(Type Guard)를 활용할 수 있습니다. 이를 사용하여 런타임에서의 값에 대한 정보를 타입 시스템에 전달할 수 있어, 다중 타입을 처리하는 방법을 알려드리겠습니다.
타입 가드를 이해하기
타입 가드란 런타임에 원시 타입 정보를 사용하여 타입을 추론하는 함수입니다. 주로 typeof
, instanceof
, in
, Array.isArray
등을 사용하여 값을 분석하고 타입을 확인합니다.
function isNumber(value: any): value is number {
return typeof value === 'number';
}
instanceof를 활용한 객체 타입 가드
인터페이스나 클래스로 정의된 여러 타입을 구분할 때 instanceof
를 활용할 수 있습니다. 이를 통해 해당 객체가 특정 클래스의 인스턴스인지 여부를 확인할 수 있습니다.
class Dog {
bark() {
console.log('Woof!');
}
}
class Cat {
meow() {
console.log('Meow!');
}
}
function isDogOrCat(pet: Dog | Cat): pet is Dog {
return (pet as Dog).bark !== undefined;
}
let animal: Dog | Cat = new Dog();
if (isDogOrCat(animal)) {
animal.bark(); // 컴파일러가 animal을 Dog로 처리합니다.
} else {
animal.meow(); // 컴파일러가 animal을 Cat으로 처리합니다.
}
사용자 지정 타입 가드
사용자 지정 타입 가드를 활용하여 타입을 세분화할 수도 있습니다. 다음은 유사 배열 객체를 구분하는 예제입니다.
interface ArrayLike {
length: number;
}
function isArrayLike(obj: any): obj is ArrayLike {
return typeof obj.length === 'number';
}
결론
타입 가드를 활용하여 타입 시스템을 더욱 유연하게 활용할 수 있습니다. typeof
, instanceof
, 사용자 지정 타입 가드 등을 활용하여 다중 타입을 처리하는 데 도움이 될 것입니다.
자세한 내용은 공식 TypeScript 문서를 참고하시기 바랍니다.