타입스크립트의 튜플 타입과 비교하자면, 튜플은 특정 타입이나 값을 고정하는 배열이라면, 이넘은 특정 값을 고정하는 것이다. 즉 특정 값들의 집합을 의미하는 자료형이다.
이넘은 Java, C와 같은 다른 프로그래밍 언어를 다뤄본 적이 있는 사람들에게는 익숙할 수 있다.
타입스크립트에서 이넘은 문자형 이넘과 숫자형 이넘을 지원한다.
// enum 타입 선언
enum Coffee {
Starbucks,
Ediya,
Twosome,
}
let latte: Coffee; // enum 타입 변수 선언
latte = Coffee.Starbucks; // enum 타입 변수에 enum 값 할당
latte = "Good"; // 오류 발생
let tea: Coffee.Twosome; // enum 값을 타입 자체로도 사용 가능
위 코드처럼 enum 타입을 선언하고 enum 타입 변수를 선언하여 값을 할당하여 사용할 수 있다.
그러나 이때 enum 타입 변수에는 반드시 설정된 enum 값만 올 수 있다.
해당 예제에서는 설정된 enum 값 Starbucks, Ediya, Twosome 만 올 수 있는 것이다.
이외의 값이 오면 오류가 발생할 것이다.
숫자형 이넘
기본적으로 enum에 아무 값도 할당하지 않으면 마치 배열 인덱스와 같이 0부터 시작하여 멤버들의 번호를 매기는 특징을 가진다.
[TypeScript] 이넘(Enum)
이넘(Enum)
이넘(Enum)은 특정 값을 고정하는 또 다른 독립된 자료형이라 할 수 있다.
타입스크립트의 튜플 타입과 비교하자면, 튜플은 특정 타입이나 값을 고정하는 배열이라면, 이넘은 특정 값을 고정하는 것이다. 즉 특정 값들의 집합을 의미하는 자료형이다.
이넘은 Java, C와 같은 다른 프로그래밍 언어를 다뤄본 적이 있는 사람들에게는 익숙할 수 있다.
타입스크립트에서 이넘은 문자형 이넘과 숫자형 이넘을 지원한다.
위 코드처럼 enum 타입을 선언하고 enum 타입 변수를 선언하여 값을 할당하여 사용할 수 있다.
그러나 이때 enum 타입 변수에는 반드시 설정된 enum 값만 올 수 있다.
해당 예제에서는 설정된 enum 값 Starbucks, Ediya, Twosome 만 올 수 있는 것이다.
이외의 값이 오면 오류가 발생할 것이다.
숫자형 이넘
기본적으로 enum에 아무 값도 할당하지 않으면 마치 배열 인덱스와 같이 0부터 시작하여 멤버들의 번호를 매기는 특징을 가진다.
하지만 enum의 멤버 번호가 반드시 0부터 시작할 필요는 없다.
이때 우리는 수동으로 값을 명시할 수 있으며 이를 숫자형 이넘을 선언하는 방식이라 할 수 있다.
위 예제처럼 수동으로 값을 명시할 수 있으며, 값을 변경한 부분부터 다시 1씩 증가하여 값이 할당될 것이다.
< 숫자형 이넘 활용 >
앞선 숫자형 이넘을 선언해 아래와 같이 활용할 수 있다.
문자형 이넘
이넘은 숫자 번호 뿐 아니라 문자열 값으로 초기화할 수 있다.
문자형 이넘은 이넘 값 전부 다 특정 문자나 다른 이넘 값으로 초기화해줘야 한다.
리버스 매핑(Reverse Mapping)
타입스크립트에서 숫자형 이넘에서 리버스 매핑이 존재한다.
문자형 이넘에서는 리버스 매핑이 존재하지 않는다.
리버스 매핑이란 이넘의 키로 값을 얻거나 값으로 키를 얻을 수 있는 것을 말한다.
객체와 이넘 차이
'Front-End > TypeScript' 카테고리의 다른 글