[typescript] 타입 가드를 사용하여 예외를 구체적으로 처리할 수 있나요?

타입스크립트에서 타입 가드를 사용하면 더욱 구체적으로 예외를 처리할 수 있습니다. 타입 가드는 런타임에 특정 타입인지를 확인하여 해당 타입에 대해 안전하게 작업할 수 있도록 도와주는 기능입니다.

예를 들어, 다음과 같은 상황을 가정해 봅시다.

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

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

type Shape = Circle | Square;

function getArea(shape: Shape): number {
  if (shape.kind === "circle") {
    return Math.PI * shape.radius ** 2;
  } else if (shape.kind === "square") {
    return shape.sideLength ** 2;
  }

  // 타입 가드를 사용했으므로 여기에서는 shape가 정확히 Circle 또는 Square 타입으로 좁혀져 있습니다.
  // 따라서 이 부분에서는 새로운 경우의 수를 체크하거나 예외를 발생시키는 등의 작업을 안전하게 수행할 수 있습니다.
  throw new Error("Unknown shape type");
}

위 예제에서 shapekind 프로퍼티를 체크하여 타입을 좁히고, 해당 타입에 맞게 안전하게 작업을 수행하고 있습니다. 또한, 타입 가드를 사용했기 때문에 마지막에는 throw new Error를 사용하여 예외를 처리하는 부분까지 type-safe 하게 구현할 수 있습니다.

이러한 방식으로 타입 가드를 활용하여 예외 처리를 더욱 구체적으로 수행할 수 있습니다.


참고 문헌: