[typescript] 유니온 타입을 확인하는 타입 가드 함수 작성 방법

아래는 TypeScript로 유니온 타입을 확인하는 타입 가드 함수를 작성하는 예제입니다.

// 유니온 타입 정의
type Foo = { type: "foo", fooProp: string };
type Bar = { type: "bar", barProp: number };

type MyUnionType = Foo | Bar;

// 타입 가드 함수 정의
function isFoo(obj: MyUnionType): obj is Foo {
    return obj.type === "foo";
}

// 타입 가드 함수 활용
function processUnionType(obj: MyUnionType) {
    if (isFoo(obj)) {
        console.log(obj.fooProp.toUpperCase());
    } else {
        console.log(obj.barProp.toFixed(2));
    }
}

// 테스트
const obj1: MyUnionType = { type: "foo", fooProp: "abc" };
const obj2: MyUnionType = { type: "bar", barProp: 123 };

processUnionType(obj1);  // 출력: "ABC"
processUnionType(obj2);  // 출력: "123.00"

위 예제에서 isFoo 함수는 MyUnionType의 값이 Foo 타입인지를 확인하는 타입 가드 함수입니다. 이를 활용하여 processUnionType 함수 내에서 해당 값이 FooBar 중 어떤 타입인지를 구별하여 안전하게 접근할 수 있습니다.

이처럼 타입 가드 함수를 활용하면 유니온 타입의 안전한 처리가 가능해집니다. 필요에 따라 유니온 타입의 다른 타입에 대한 타입 가드 함수도 추가하여 활용할 수 있습니다.