[typescript] 타입스크립트에서 타입 가드의 개념

타입스크립트는 정적 타입 지정이 가능한 자바스크립트의 확장판으로, 자바스크립트 코드에 타입을 부여함으로써 코드 안정성을 높일 수 있습니다. 타입 가드(Type Guard)는 이러한 정적 타입 지정을 활용하여 런타임 시점에 변수의 타입을 확실하게 판별하는 기능을 말합니다.

타입 가드란?

타입 가드는 특정 조건을 만족할 때, 변수가 특정한 타입인지 판별하는 메커니즘입니다. 보통 조건식 안에서 typeof, instanceof, in 연산자 등을 활용하여 타입을 판별하게 됩니다. 예를 들어, 다음 코드에서 any 타입이 string으로 좁아지도록 타입 가드를 활용할 수 있습니다.

function printLength(text: any) {
    if (typeof text === 'string') {
        console.log(text.length);
    }
}

위 예제에서 typeof text === 'string'를 통해 text 변수의 타입을 가드하고 있습니다. 이를 통해 런타임 에러를 사전에 방지할 수 있습니다.

사용 예시

타입 가드는 다양한 상황에서 활용될 수 있습니다. 예를 들어, 옵셔널 프로퍼티를 가진 인터페이스나 유니언 타입 등에서 타입을 확신할 수 있도록 도와줍니다. 또한, 다형성이 존재하는 경우에도 타입 가드를 이용하여 적절한 타입 처리를 할 수 있습니다.

interface Circle {
  kind: "circle";
  radius: number;
}

interface Square {
  kind: "square";
  sideLength: number;
}

type Shape = Circle | Square;

function getArea(shape: Shape) {
    switch (shape.kind) {
        case 'circle':
            return Math.PI * shape.radius ** 2;
        case 'square':
            return shape.sideLength ** 2;
    }
}

위 코드에서 kind 프로퍼티를 통해 shape 변수의 타입을 가드하고 있습니다. 이를 통해 각 타입에 맞는 동작을 수행할 수 있습니다.

결론

타입 가드는 타입스크립트에서 타입 안정성을 높이고 런타임 에러를 줄이는데 사용될 수 있는 강력한 도구입니다. 제대로 활용하면 코드의 안정성과 가독성을 높일 뿐만 아니라 개발 생산성을 향상시킬 수 있습니다.

타입 가드에 대한 자세한 내용은 타입스크립트 공식 문서를 참고하시기 바랍니다.