[typescript] 타입 가드 함수를 사용하여 동적 타입 변환 방지하기

TypeScript에서는 타입 가드 함수를 사용하여 변수의 타입을 런타임 시 동적으로 변환하는 것을 방지할 수 있습니다. 이를 통해 코드의 안정성을 높일 수 있으며, 타입 안정성을 확보할 수 있습니다.

타입 가드 함수란?

타입 가드 함수는 특정 타입을 확인하고, 그에 맞게 코드를 작성하는 함수입니다. 이를 통해 TypeScript 컴파일러는 변수의 타입을 정확히 인식하고, 해당 타입에 맞는 기능을 활용할 수 있습니다.

instanceof 연산자를 이용한 타입 가드

instanceof 연산자를 사용하여 객체의 타입을 확인하는 타입 가드 함수를 만들 수 있습니다. 예를 들어, 다음과 같은 코드를 작성할 수 있습니다.

class Car {
    drive() {
        console.log('Driving the car');
    }
}

class Bicycle {
    ride() {
        console.log('Riding the bicycle');
    }
}

function move(vehice: Car | Bicycle) {
    if (vehice instanceof Car) {
        vehice.drive();
    } else {
        vehice.ride();
    }
}

위의 예제에서, move 함수는 Car 또는 Bicycle 타입의 매개변수를 받습니다. instanceof 연산자를 사용하여 매개변수의 타입을 확인하고, 각각의 타입에 맞는 기능을 실행합니다.

사용자 정의 타입 가드 함수

사용자가 직접 정의한 함수를 사용하여 타입 가드 함수를 만들 수도 있습니다. 예를 들어, 다음과 같은 예제를 살펴볼 수 있습니다.

interface Bird {
    fly(): void;
}

interface Fish {
    swim(): void;
}

function isBird(pet: Bird | Fish): pet is Bird {
    return (pet as Bird).fly !== undefined;
}

function move(pet: Bird | Fish) {
    if (isBird(pet)) {
        pet.fly();
    } else {
        pet.swim();
    }
}

위의 예제에서, isBird 함수는 pet 매개변수가 Bird 타입인지를 확인하여 불리언 값을 반환합니다. 이를 통해 move 함수에서는 해당 값을 사용하여 적절한 기능을 실행할 수 있습니다.

따라서, 타입 가드 함수를 이용하여 동적 타입 변환을 방지함으로써 코드의 안정성을 높일 수 있습니다.

참고 자료