TypeScript에는 JavaScript에는 없는 Enums라는 Type이 있다.
서칭해본 결과 다른 프로그래밍 언어에서는 일부 존재하는 Type이다. (Java, C# 등)
Enums는 열거형으로 명명된 값의 집합을 이루는 자료형이다.
TypeScript에서는 숫자형과 문자형 두 가지 Enums가 존재한다.
enum이라는 키워드를 사용해서 열거형을 정의할 수 있다.
enum Nums {
First,
Second,
Third,
Fourth
}
console.log(Nums.First); // 0
console.log(Nums.Second); // 1
console.log(Nums.Third); // 2
console.log(Nums.Fourth); // 3
Nums
별도의 값을 넣지 않으면 숫자형 Enum으로 취급하고 처음 값을 0
으로 그리고 순서대로 1씩 증가시킨다.
그럼 아래와 같이 초기값을 넣어주면 어떻게 될까?
초깃값 다음부터 1씩 증가한다.
enum Nums {
First = 5,
Second,
Third,
Fourth
}
console.log(Nums.First); // 5
console.log(Nums.Second); // 6
console.log(Nums.Third); // 7
console.log(Nums.Fourth); // 8
Q1. 만약 초기와 중간만 값을 지정하면 어떻게 될까?
enum Nums {
A = 2,
B,
C = 100,
D
}
console.log(Nums.A); // 2
console.log(Nums.B); // 3
console.log(Nums.C); // 100
console.log(Nums.D); // 101
여기서 아래와 같은 궁금한 내용이 추가로 생겼다.
Q2. 그럼 초깃값을 지정하지 말고, 중간부터 지정하면 어떻게 될까?
A. 예상한 대로 초깃값은 0으로 순서대로 1씩 증가 시키다가, 중간에 지정한 값을 만나면 그 다음부터는 지정한 값부터 1씩 증가한다. 이것 역시 예제를 준비했다.
enum Nums {
A,
B,
C = 100,
D
}
console.log(Nums.A); // 0
console.log(Nums.B); // 1
console.log(Nums.C); // 100
console.log(Nums.D); // 101
Numeric Enums와 다르게 자동증가하는 기능이 없다.
enum Nums {
A = 'a',
B = 'b',
C = 'c',
D = 'd'
}
console.log(Nums.A); // 'a'
console.log(Nums.B); // 'b'
console.log(Nums.C); // 'c'
console.log(Nums.D); // 'd'
숫자 열거형에만 존재하는 기능이고 문자열 열거형에는 존재하지 않는다.
enum
의 키(key)
로 값(value)
를 얻을 수 있고, 반대로 값(value)
으로 키(key)
를 얻을 수도 있다.
enum Num {
A
}
let a = Num.A; // 키로 값을 획득하기
let keyName = Num[a]; // 값으로 키를 획득하기