[typescript] 유니온 타입을 사용하여 타입 가드를 활용하는 방법은 무엇인가요?

예를 들어, 다음과 같이 유니온 타입을 사용하여 타입 가드를 활용할 수 있습니다.

type Fish = { swim: () => void };
type Bird = { fly: () => void };

function move(animal: Fish | Bird) {
    if ("swim" in animal) {
        // animal이 Fish 타입일 때의 로직
        animal.swim();
    } else {
        // animal이 Bird 타입일 때의 로직
        animal.fly();
    }
}

위 예제에서 move 함수는 FishBird 타입을 갖는 animal 매개변수를 받습니다. 이후 if ("swim" in animal)을 통해 해당 객체가 Fish 타입인지 검사하고, 이에 따라 다른 로직을 수행하도록 구현되어 있습니다.

이와 같이 유니온 타입과 타입 가드를 활용하여, 다양한 타입을 안전하게 다루고 처리할 수 있습니다.

참고 자료: