상수들을 관리하기 위한 객체로 상수의 집합을 정의
일반 객체와 달리 열거형은 프로퍼티의 변경을 허용하지 않음
열거형의 프로퍼티는 기본적으로 숫자, 문자만 허용
열거형을 이용하면 상수의 수를 제한할 수 있고 코드의 가독성을 높일 수 있음
예시 코드
// 열거형을 사용하지 않은 경우
const korean = 'ko'
const english = 'en'
const japanese = 'ja'
const chinese = 'zh'
const spanish = 'es'
type LanguageCode = 'ko' | 'en' | 'ja' | 'zh' | 'es'
const code: LanguageCode = korean
// 열거형을 사용하는 경우
enum LanguageCode {
korean = 'ko',
english = 'en',
japanese = 'ja',
chinese = 'zh'
spanish = 'es'
}
const code: LanguageCode = LanguageCode.korean
// 열거형의 자동 값 지정
enum ArrowKey {
Up = 1,
Down,
Left = 20,
Right
}
// Up = 1, Down = 2, Left = 20, Right = 21 로 자동 지정
// 하지만 enum이 const로 지정되는 경우 자동 지정 불가능
// 보통 key로 value를 꺼내지만 반대로 value를 통해 key 가져올 수 있음(리버스 매핑)
// const enum은 또한 리버스 매핑도 불가능