TypeScript

[TS] Enum(열거형) 타입

ea_jung 2024. 6. 29. 16:20

 

Enum(열거형) 타입

열거형 타입은 여러 개의 값을 나열하는 용도로 사용합니다.

실제로 enum은 컴파일 될 때 다른 타입들 처럼 사라지지 않고 자바스크립트 객체로 변환됩니다. 

 

// Enum 컴파일 전
enum Role {
  ADMIN,
  USER,
  GUEST,
}

enum Language {
  korean = "ko",
  english = "en",
}

// 컴파일 후 자바스크립트 객체로 변환된다.
var Role;
(function (Role) {
    Role[Role["ADMIN"] = 0] = "ADMIN";
    Role[Role["USER"] = 1] = "USER";
    Role[Role["GUEST"] = 2] = "GUEST";
})(Role || (Role = {}));
var Language;
(function (Language) {
    Language["korean"] = "ko";
    Language["english"] = "en";
    Language["japanese"] = "jp";
})(Language || (Language = {}));

 

 

본격적으로 Enum(열거형) 타입에 대해 알아 봅시다. 

 

enum Role {
    ADMIN, 
    USER, 
    GUEST,
}

 

 

3개의 값 ADMIN, USER, GUEST를 나열한 enum 입니다. 

enum의 각 값에는 숫자를 할당할 수 있습니다. 

 

enum Role {
  ADMIN = 0,
  USER = 1,
  GUEST = 2,
}

 

 

그리고 신기하게도 enum은 숫자를 직접 할당하지 않아도 0부터 1씩 늘어나는 값으로 자동으로 할당됩니다. 

 

enum Role {
  ADMIN, // 0 할당 (자동)
  USER, // 1 할당 (자동)
  GUEST, // 2 할당 (자동)
}

 

 

만약 ADMIN 에 10을 할당했다면 10에서 1씩 증가하며 증가합니다.

 

// enum 타입
// 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입

enum Role {
  ADMIN = 10, // 10 할당 
  USER,       // 11 할당(자동)
  GUEST,      // 12 할당(자동)
}

 

 

그리고 enum의 값 들은 프로퍼티의 값으로 각각 사용 가능합니다. 

 

// enum 타입
// 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입

enum Role {
  ADMIN = 10, // 10 할당 
  USER,       // 11 할당(자동)
  GUEST,      // 12 할당(자동)
}

const user1 = {
  name: "이놈",
  role: Role.ADMIN, // 10
};

const user2 = {
  name: "정진경",
  role: Role.USER, // 11
};

 

위의 예시와 같이 값이 모두 숫자인 enum숫자형 enum 혹은 숫자 열거형 타입이라고 합니다. 

 

문자형 열거형

enum의 멤버에는 숫자 말고도 문자열 값도 할당할 수 있습니다.

 

enum Language {
  korean = "ko",
  english = "en",
}

 

 

위와 같이 값이 문자열인 enum을 특별히 문자열 enum 이라고 부릅니다. 

 

enum Role {
  ADMIN,
  USER,
  GUEST,
}

enum Language {
  korean = "ko",
  english = "en",
}

const user1 = {
  name: "정진경",
  role: Role.ADMIN, // 0
  language: Language.korean,// "ko"
};

 

enum을 사용하면 user1.language 같은 프로퍼티에 실수로 ko라고 적었어야 할 것을 오타가 발생해 kos로 적거나 하는 실수를 방지할 수 있습니다. 

 

반응형