관련 값 모음을 구성하는
Type
Enum
은 특정 값들의 집합을 의미하는 자료형으로 크게 숫자형, 문자형으로 분류할 수 있다.
Typescript
의 숫자형 Enum
은 아래와 같이 선언한다.
enum Direction {
Up = 1,
Down,
Left,
Right
}
숫자형 Enum
은 선언 시 부여한 초기 값부터 차례로 1씩 증가하며 만약 초기 값을 지정하지 않았다면 0부터 차례로 1씩 증가한다.
enum Direction {
Up = 1,
Down, // 2
Left, // 3
Right // 4
}
이렇게 선언된 숫자형 Enum
은 아래와 같이 사용할 수 있다.
enum Purchase {
No = 0,
Yes = 1,
}
function buyItem(name: string, purchase: Purchase): void {
// ...
}
buyItem("apple", Response.Yes);
숫자형 Enum
에서 주의해야 될 점은 선언 시 Enum
값에 다른 Enum
타입의 값을 사용하면 선언하는 Enum
의 첫 번째 값을 반드시 초기화 해야 한다.
enum Wrong {
A = getSomeValue(),
B, // Error, 초기화 필요
}
문자형 Enum
은 숫자형 Enum
과 개념적으로는 거의 비슷하며 다만, 런타임에서의 미세한 차이가 존재한다.
일단 문자형 Enum
은 모든 값을 특정 문자 또는 다른 Enum
값으로 초기화 해야 한다.
또한, 숫자형 Enum
과 다르게 auto-incrementing
이 없어서 항상 명확한 값이 출력된다.
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}
Enum
은 키(key)
를 이용하여 값(value)
를 얻을 수 있고, 값(value)
을 이용하여 키(key)
를 얻을 수도 있다.
이를 Reverse Mapping
이라고 하며, 이는 Enum
에만 존재하는 특징이다.
enum Enum {
A
}
let a = Enum.A; // 키로 값을 획득
let keyName = Enum[a]; // 값으로 키를 획득
TypeScript: JavaScript With Syntax For Types.
React TypeScript Tutorial for Beginners - Codevolution
타입스크립트 입문 - 기초부터 실전까지 - 장기효