[typescript] 열거형(Enum) 값의 타입 지정

TypeScript에서는 열거형(Enum)을 사용하여 관련된 상수들을 그룹화할 수 있습니다. 열거형(Enum)은 특정 값에 이름을 부여할 수 있어 가독성이 향상되고, 실수로 잘못된 값이 사용되는 것을 방지해줍니다. 그럼에도 불구하고, 열거형(Enum) 값에 대한 타입을 어떻게 지정할 수 있을까요?

열거형(Enum) 생성

먼저, 열거형(Enum)을 생성해보겠습니다. 이 예제에서는 간단한 열거형을 선언하고, 해당 값에 맞는 타입을 지정하는 방법을 살펴보겠습니다.

enum Color {
  Red = "RED",
  Green = "GREEN",
  Blue = "BLUE",
}

위의 예제에서는 Color 열거형을 선언하고, 각 상수에 해당하는 문자열 값을 할당했습니다.

Enum으로 타입 지정

이제 열거형(Enum)으로 타입을 지정하는 방법을 알아봅시다. 예를 들어, 변수 selectedColorColor 열거형의 값을 할당하고자 할 때, 타입을 지정하는 방법은 다음과 같습니다.

let selectedColor: Color;

selectedColor = Color.Red; // 유효한 값
// selectedColor = "RED"; // 에러: 문자열은 Color 타입이 아닙니다.
// selectedColor = "Purple"; // 에러: Purple은 Color 열거형에 정의되지 않은 값입니다.

selectedColor의 타입을 Color로 지정하여, Color 열거형의 값만을 할당할 수 있게 됩니다. 이를 통해 컴파일 전에 잘못된 값이 할당되는 것을 방지할 수 있습니다.

숫자 기반 열거형(Enum)

열거형(Enum)을 사용할 때 숫자를 기반으로 할 경우, TypeScript는 값을 자동으로 증가시킵니다. 하지만 숫자 기반 열거형(Enum)에서 타입을 명시하기 위해서는 명시적으로 타입을 설정해주어야 합니다.

enum Status {
  InProgress = 1,
  Completed = 2,
}

let taskStatus: Status;

taskStatus = Status.InProgress; // 유효한 값
// taskStatus = 3; // 에러: 숫자 3은 Status 타입이 아닙니다.

결론

TypeScript에서 열거형(Enum) 값을 사용할 때, 해당 값의 타입을 명확히 지정하는 것은 실수로 발생할 수 있는 버그와 에러를 방지하고 코드의 가독성을 높일 수 있습니다. 열거형(Enum)을 사용할 때 타입을 명시하는 방법을 알아두면 더욱 안정적인 코드를 작성할 수 있을 것입니다.