[typescript] 타입 가드와 타입 추론의 관계

타입스크립트(TypeScript)에서는 자바스크립트의 유연한 동적 타입을 보완하기 위해 정적 타입 검사와 타입 추론을 제공합니다. 타입 가드(Type Guard)는 이러한 타입 추론을 지원하는데, 이것은 값의 타입을 런타임 시점에 검사하여 특정 조건을 만족하는 경우 해당 값의 타입을 좁혀주는 역할을 합니다.

타입 가드란?

예를 들어, 다음과 같이 유니언 타입을 다룰 때 타입 가드를 사용할 수 있습니다.

function printNumberOrString(value: number | string) {
    if (typeof value === "number") {
        console.log("숫자: " + value.toFixed(2));
    } else {
        console.log("문자열: " + value.toUpperCase());
    }
}

위 예제에서 typeof를 사용하여 value의 타입을 검사하고, 각 경우에 맞게 해당 타입의 기능을 사용할 수 있습니다. 이로써 타입 가드를 사용하여 value의 타입을 좁혀나갈 수 있습니다.

타입 추론과의 관계

타입 가드는 런타임 시점에 값의 타입을 검사하여 타입을 좁혀지게 합니다. 이때 타입 추론(Type Inference)이 타입 가드의 동작을 지원합니다. 타입 추론은 변수를 선언할 때 해당 변수의 타입을 자동으로 추론하여 지정하는 기능으로, 타입 가드와 맞물려 함께 사용될 때 강력한 정적 타입 검사를 지원합니다.

타입 가드를 사용하면, 타입 추론은 해당 값을 더 정확하게 추론하여 정적 타입 검사가 강화됩니다. 이로써 코드의 가독성과 안정성을 함께 확보할 수 있습니다.

정리

타입 가드는 런타임 시점에 값의 타입을 검사하여 해당 값의 타입을 좁혀주는 역할을 합니다. 이때 타입 추론은 타입 가드와 함께 사용될 때 정적 타입 검사의 강화를 지원하며, 코드의 가독성과 안정성을 향상시켜줍니다.

타입 가드와 타입 추론을 적절히 활용하여 타입스크립트의 강력한 정적 타입 시스템을 활용할 수 있습니다.

참고 문헌: 타입스크립트 핸드북 - Advanced Types