본문 바로가기
Language/TypeScript

[TypeScript] 열거형(Enums)이란?

by 썸머워즈 2022. 6. 2.
반응형

열거형 Enum은 TypeScript가 제공하는 기능 중 하나이다.

Java 같은 곳에서는 이미 제공이 되어있는 상태며 JavaScript에서는 없었는데 TypeScript에서는 제공을 해준다.

 

그럼 Enum에 대해 알아보자.


Enum

Enum은 그 안에 무슨 값들을 열거했냐에 따라서 Numeric enums, String enums 등으로 불리기도 하는데, 보통 상수들의 집합을 정의하고자 할 때 주로 사용되고는 한다.

 

몇가지 특징에 대해서 알아보자.

 

▷ 숫자 열거형 (Numeric enums)

enum Weekdays {
  Monday,
  Tuesday,
  Wednesday,
  Thursday = 10,
  Friday,
  Saturday,
  Sunday,
}
let day: Weekdays = Weekdays.Thursday;
day = 12;

보통 enum은 위와 같이 사용하고는 하는데, 왜 저게 숫자 열거형이냐 하면 따로 특정한 값이 주어지지 않으면 자동적으로 0부터 숫자가 할당되기 때문이다.

Moday = 0, Tuesday = 1, Wednesday = 2, 이런 식으로 말이다.

 

그렇다면 Thursday에서 10을 지정해줬는데 여기서 Friday는 무슨 값일까?

그건 초기값을 기준으로 다시 1씩 증가하기 때문에 Friday = 11이 된다. 그 이후 역시 1씩 증가한 값이 할당된다.

 

▷ 문자 열거형 (String enums)

enum Codes {
  CD0001 = '퇴사',
  CD0002 = '이직',
  CD0003 = '취업',
  CD0004 = '취준',
  CD0005 = '백수',
  CD0006 = '코코',
}
let code: Codes = Codes['CD0001'];
code = Codes.CD0003;

문자 열거형 역시 이런식으로 값을 할당하여 사용할 수 있다.


일단 기본적인 사용방법에 대해서는 알아봤는데, enum의 특징은 일단 안에 값들은 읽기 전용이라 수정, 삽입이 불가능하다는 특징을 가지고 있어 상수의 집합을 표현하기에는 적절하기는 하다.

 

하지만 아무래도 단점이 존재하기는 하는데, 아래 예제를 한번 봐보자.

enum Weekdays {
  Monday,
  Tuesday,
  Wednesday,
  Thursday = 10,
  Friday,
  Saturday,
  Sunday,
}
let day: Weekdays = Weekdays.Thursday;
day = 12;
day = 20;

아까 숫자 열거형에서 사용한 예제인데, day = 20 이라는 부분부터 이상함이 감지된다.

Weekdays enum에는 20이라는 숫자가 현재 불가능한 숫자인데, 아무 에러도 발생하지 않는다.

 

타입 스크립트의 엄격함이 깨지는 순간이다.

그렇기 때문에 굳이 상수를 관리한다고 enum을 사용하고자 한다면 숫자 열거형 말고 문자 열거형을 사용하는 것이 좋고,

그래도 enum보다는 그냥 class로 상수를 관리하는 게 더욱더 좋다.

class AppCode {
  static readonly CD0001 = "1상수입니다.";
  static readonly CD0002 = "2상수입니다.";
  static readonly MAX_LENGTH = 5;
}
let appCode = AppCode.CD0002;

 

클래스뿐만 아니라 유니온 타입과 문자열 리터럴을 사용한 방법으로 관리하는 것도 있기도 하지만 아무래도 코드별 값을 부여하는 데는 한계가 있기 때문에 상수 별 값을 그룹화하고자 한다면 클래스가 아무래도 좋은 것 같다.

 

나머지 기타 특징들은 아래 공식문서를 확인해보도록 하자.


참고: https://www.typescriptlang.org/docs/handbook/enums.html

 

Handbook - Enums

How TypeScript enums work

www.typescriptlang.org

반응형


댓글

TOP