175일차 - Enums
About Enums
TypeScript에는 JavaScript에는 없는 Enums라는 Type이 있다.
서칭해본 결과 다른 프로그래밍 언어에서는 일부 존재하는 Type이다. (Java, C# 등)
Enums는 열거형으로 명명된 값의 집합을 이루는 자료형이다.
TypeScript에서는 숫자형과 문자형 두 가지 Enums가 존재한다.
Numeric 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
궁금증과 실험
Numeric Enums를 공부하다가 궁금한 두 가지가 생겨서 직접 실험해 봤다.
Q1. 만약 초기와 중간만 값을 지정하면 어떻게 될까?
A. 초기 값 부터 1씩 증가한다음 지정한 값을 만나면 그 다음부터는 지정한 값부터 1씩 증가한다. 설명으로는 부족할 수 있으니 아래 예제를 참고하면 이해가 쉬울 것이다.
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
String Enums(문자열 열거형)
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'
Reverse Mapping(역 매핑)
숫자 열거형에만 존재하는 기능이고 문자열 열거형에는 존재하지 않는다.
enum
의 키(key)
로 값(value)
를 얻을 수 있고, 반대로 값(value)
으로 키(key)
를 얻을 수도 있다.
enum Num {
A
}
let a = Num.A; // 키로 값을 획득하기
let keyName = Num[a]; // 값으로 키를 획득하기
참고자료
TypeScript - Enums
캡틴판교 - TypeScript
Author And Source
이 문제에 관하여(175일차 - Enums), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pest95/175일차1-Enums저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)