[typescript] 유니온 타입을 사용하여 타입 에러를 줄일 수 있는 방법은 무엇인가요?

유니온 타입은 TypeScript에서 여러 타입 중 하나를 나타내는 데 사용됩니다. 유니온 타입을 적절히 활용하면 코드에서 발생할 수 있는 타입 에러를 줄일 수 있습니다. 이를 통해 더 안정적이고 안전한 코드를 작성할 수 있습니다.

1. 타입 가드 활용

유니온 타입을 사용할 때 핵심적인 패턴은 타입 가드(Type Guard) 입니다. 타입 가드를 사용하면 런타임 시점에서 변수의 타입을 보다 정확하게 추론할 수 있습니다.

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

function printId(input: string | number): void {
    if (typeof input === 'string') {
        console.log('문자열 ID:', input.toUpperCase());
    } else {
        console.log('숫자 ID:', input.toFixed(2));
    }
}

2. 널러블 타입과의 활용

유니온 타입은 널러블 타입과 함께 사용하여 널 체크 또는 언디파인드 체크를 보다 쉽게 할 수 있습니다.

예를 들어, 다음과 같이 유니온 타입을 사용하여 널러블 타입을 표현할 수 있습니다.

let userInput: string | null;

// ...

if (userInput !== null) {
    console.log(userInput.toUpperCase());
}

3. 체이닝과 조건부 프로퍼티

유니온 타입을 사용하여 여러 조건에 따라 다른 프로퍼티에 접근할 수 있습니다.

예를 들어, 다음과 같이 유니온 타입을 사용하여 다양한 상황에 따라 다른 프로퍼티에 접근할 수 있습니다.

type Car = {
    brand: string;
    speed: number;
} | {
    brand: string;
    price: number;
};

function printInfo(car: Car) {
    if ('speed' in car) {
        console.log(`브랜드: ${car.brand}, 속도: ${car.speed}`);
    } else {
        console.log(`브랜드: ${car.brand}, 가격: ${car.price}`);
    }
}

유니온 타입을 활용하여 타입 에러를 줄이고, 코드의 안정성을 높일 수 있습니다. 이에 더불어 타입 가드와의 조합, 널러블 타입과의 활용, 그리고 조건부 프로퍼티에 대한 이해를 통해 더욱 유익한 TypeScript 코드를 작성할 수 있습니다.

관련 참고문헌: TypeScript 공식문서 - 유니온 타입