다중 타입을 처리하기 위해 타입 가드를 사용하는 방법에 대해 알아보겠습니다. 타입 가드는 특정 조건을 만족하는 타입들을 구분하여 처리할 수 있게 도와줍니다.
타입 가드란 무엇인가요?
타입 가드(Type Guard) 는 TypeScript에서 변수의 타입을 좁히는 것을 도와주는 방법입니다. 보통 조건부 타입을 사용하여 구현되며, 여러가지 타입을 다룰 때 유용하게 활용할 수 있습니다.
typeof 타입 가드
가장 간단한 타입 가드 중 하나는 typeof
를 사용하는 것입니다. 예를 들어, 다음과 같은 상황에서 typeof
를 사용하여 타입을 가드할 수 있습니다.
function printText(text: number | string) {
if (typeof text === "string") {
console.log(text.toUpperCase());
} else {
console.log(text);
}
}
위 코드에서 typeof text === "string"
을 통해 text
의 타입을 가드하고 있습니다.
instanceof 타입 가드
객체의 인스턴스 타입을 체크하여 타입을 가드할 수도 있습니다. 다음은 instanceof
를 사용한 예제입니다.
class Car {
// ...
}
class Bike {
// ...
}
function moveVehicle(vehicle: Car | Bike) {
if (vehicle instanceof Car) {
console.log("Driving a car");
} else {
console.log("Riding a bike");
}
}
위 예제에서 instanceof
를 이용하여 vehicle
의 타입을 가드하고 있습니다.
사용자 정의 타입 가드
타입스크립트에서는 사용자가 직접 작성한 함수를 사용하여 타입을 가드할 수 있는 사용자 정의 타입 가드도 가능합니다. 이렇게 하면 좀 더 복잡한 조건에 맞게 타입을 가드할 수 있습니다.
interface Bird {
fly(): void;
layEggs(): void;
}
interface Fish {
swim(): void;
layEggs(): void;
}
function isFish(pet: Bird | Fish): pet is Fish {
return (pet as Fish).swim !== undefined;
}
function getPet(pet: Bird | Fish) {
if (isFish(pet)) {
return "Fish";
} else {
return "Bird";
}
}
위의 예제에서 isFish
함수는 pet
의 타입을 가드하는 사용자 정의 타입 가드입니다.
요약
이렇게 다양한 방법으로 타입 가드를 활용하면 다중 타입을 처리하는데 유용합니다. typeof
, instanceof
, 사용자 정의 타입 가드 등을 통해 조건부 타입을 활용하여 타입을 좁힐 수 있습니다.
더 자세한 내용은 TypeScript 공식 문서에서 확인할 수 있습니다.