[typescript] 열거형(Enum)을 이용한 타입 가드(Type Guard)

타입스크립트(TypeScript)에서는 열거형(Enum)을 사용하여 타입 가드(Type Guard)를 구현할 수 있습니다. 열거형은 특정 값 집합에 이름을 붙여 사용할 수 있도록 도와주는 기능이며, 타입 가드는 런타임 상태에서 해당 값의 타입을 보장해주는 방법입니다. 이 두 가지를 결합하여 코드의 가독성과 안정성을 높일 수 있습니다.

열거형(Enum) 소개

열거형은 관련된 상수 값들을 묶어서 정의할 수 있는 TypeScript의 기능입니다. 예를 들어, 요일에 대한 열거형을 다음과 같이 정의할 수 있습니다.

enum Day {
  Sunday,
  Monday,
  Tuesday,
  Wednesday,
  Thursday,
  Friday,
  Saturday
}

위의 열거형은 0부터 6까지의 순서를 갖는 값을 가지게 됩니다.

타입 가드(Type Guard) 구현

이제 이 열거형을 사용하여 함수 내에서 해당 값의 타입을 보장해주는 타입 가드를 다음과 같이 구현할 수 있습니다.

function isWeekend(day: Day): day is Day.Saturday | Day.Sunday {
  return day === Day.Saturday || day === Day.Sunday;
}

function getDayMessage(day: Day) {
  if (isWeekend(day)) {
    return "It's the weekend!";
  } else {
    return "It's a weekday.";
  }
}

위의 예제에서 isWeekend 함수는 day 파라미터의 타입을 Day.Saturday 또는 Day.Sunday로 보장해주는 타입 가드 함수입니다. 이를 활용하여 getDayMessage 함수 내에서는 주말과 평일에 따라 다른 메시지를 반환하도록 구현할 수 있습니다.

결론

TypeScript에서 열거형과 타입 가드를 결합하여 코드의 가독성과 안정성을 높일 수 있습니다. 열거형을 활용하여 관련된 상수 값을 그룹화하고, 타입 가드를 통해 런타임 상태에서 값의 타입을 보장받을 수 있습니다.

참조: 타입 가드(Type Guard)