-
TypeScript의 열거형(Enum)은 특정 값의 집합을 정의할 때 사용됨.
-
Enum은 일반적으로 상수값을 대신하여 사용되므로, 타입스크립트에서는 Enum이 많이 사용
-
Enum은 코드를 더욱 가독성 높게 만들어주고, 오타와 같은 실수를 방지해줌
-
JavaScript에서는 기본적으로 Enum을 지원하지 않지만, TypeScript에서는 문자형 Enum과 숫자형 Enum을 지원하며, 아래와 같은 형태로 지원
enum Color { // Color 라는 Enum 정의 // Enum의 값은 아래 세 개 Red, Green, Blue, }
-
Enum은 디폴트 값으로 숫자형을 사용하며, 각 값은 자동으로 0부터 시작하여 1씩 증가
-
아래와 같이 수동으로 값을 지정할 수도 있음
enum Color { Red = 1, Green = 2, Blue = 4, }
-
Enum 값에 대해 산술 연산 수행도 가능
enum Color { Red = 1, Green = 2, Blue = 4, } let c: Color = Color.Green; let greenValue: number = Color.Green; let blueValue: number = Color.Blue; console.log(c); // 2 console.log(greenValue); // 2 console.log(blueValue); // 4
-
문자형 Enum은 Enum의 값을 전부 다 특정 문자 또는 다른 Enum 값으로 초기화해야 함
// Direction 이라는 문자열 기반의 Enum을 정의 enum Direction { Up = "UP", Down = "DOWN", Left = "LEFT", Right = "RIGHT", } // Up, Down, Left, Right 각각에는 문자열 값이 할당되어 있고 // myDirection 변수를 Direction.Up 으로 초기화 하기에 let myDirection: Direction = Direction.Up; // 출력 결과로는 "UP"이 나오게 됨 console.log(myDirection); // "UP" }
-
문자형 Enum에는 숫자형 Enum과는 다르게 auto-incrementing이 없음.
-
디버깅 시 숫자형 Enum의 값은 불명확하게 나올 때가 있지만 문자형 Enum은 항상 명확한 값이 나와 읽기 편함.
-
문자열 기반의 Enum은 주로 외부에서 가져온 값을 TypeScript에서 다루기 위해서 사용됨 (e.g. HTTP 요청 방식을 나타내는 Enum 정의 가능)
// HTTP 요청 방식을 나타내는 HttpMethod Enum을 정의 enum HttpMethod { Get = "GET", Post = "POST", Put = "PUT", Delete = "DELETE", } // makeRequest 함수는 URL과 HTTP 요청 방식을 인자로 받음 function makeRequest(url: string, method: HttpMethod) { // ... } makeRequest("/api/data", HttpMethod.Post);
-
HTTP 요청 방식을 지정할 때는 HttpMethod.Post와 같이 Enum 값을 사용함.
-
이렇듯 Enum 사용 시 오타와 같은 실수 방지 가능, 코드의 가독성과 안정성을 높일 수 있음.
-
역 매핑은 숫자형 Enum에만 존재하며, 문자형 Enum에는 존재하지 않는 특징임.
-
열거형의 키(key)로 값(value)을 얻을 수 있고 & 값(value)으로 키(key)를 얻을 수도 있음.
enum Enum { A } // Enum의 키로 값을 얻을 수 있음 let a = Enum.A; // 값으로도 Enum의 키를 얻을 수 있음 let nameOfA = Enum[a]; // "A"