[typescript] 열거형(Enum)의 값 변경 가능 여부 설정

TypeScript에서 Enum(열거형)의 값 변경 가능 여부를 설정하는 방법에 대해 알아보겠습니다.

1. 기본 Enum 정의

가장 기본적인 Enum 정의 방법은 다음과 같습니다:

enum Fruit {
  Apple,
  Banana,
  Orange
}

이 Enum을 사용하여 변수를 선언하면 다음과 같이 사용할 수 있습니다:

let myFruit: Fruit = Fruit.Apple;

2. readonly 키워드 사용

Enum의 값을 변경할 수 없도록 설정하려면 readonly 키워드를 사용할 수 있습니다:

enum Fruit {
  Apple,
  Banana,
  Orange
}
  
const readOnlyFruit: Readonly<Fruit> = {
  Apple: 1,
  Banana: 2,
  Orange: 3
};

이제 readOnlyFruit 객체는 Enum의 값에 대한 읽기 전용 버전으로 정의되어 있어, 값을 변경할 수 없습니다.

3. Object.freeze 사용

또 다른 방법으로 Object.freeze를 사용하여 Enum 객체를 읽기 전용으로 만들 수 있습니다:

enum Fruit {
  Apple,
  Banana,
  Orange
}
  
const frozenFruit = Object.freeze(Fruit);

Object.freeze를 사용하면 frozenFruit 객체에 대한 속성의 추가, 삭제, 값 변경이 모두 금지됩니다.

4. ReadonlyArray 사용

또한 ReadOnlyArray를 사용하여 Enum의 배열을 읽기 전용으로 만들 수 있습니다:

enum Fruit {
  Apple,
  Banana,
  Orange
}
  
const readOnlyFruits: ReadonlyArray<Fruit> = [Fruit.Apple, Fruit.Banana, Fruit.Orange];

readOnlyFruits 배열은 특정 인덱스에 값을 할당할 수 없도록 보장됩니다.

이제 TypeScript에서 Enum의 값을 변경 가능 여부를 설정하는 방법에 대해 알게 되었습니다. 보다 읽기 전용으로 Enum을 활용하여 안정적인 코드를 작성할 수 있습니다.

참고 문헌:

제가 도움이 되었기를 바라며, 추가로 궁금한 점이 있으시다면 언제든지 물어보세요.