이넘이란 열거형을 의미합니다.
타입스크립트에는 자바스크립트에는 없는 또다른 타입인 이넘(enum)이 있습니다. 이넘은 특정 값들의 집합을 의미하는 자료형입니다. 타입스크립트에서는 문자형 이넘과 숫자형 이넘을 지원합니다.
추가적으로 Enum을 사용하여 얻을 수 있는 이점들은 다음과 같습니다.
- 상수를 사용할때보다 IDE의 적극적인 지원을 받을 수 있습니다.
- 변경범위가 줄어듭니다.
타입스크립트에서 숫자형 이넘은 아래와 같이 선언한다.
enum Direction {
Up = 1,
Down,
Left,
Right
}
숫자형 이넘을 선언할 때 초기 값을 주면 초기 값부터 차례로 1씩 증가한다
Up = 1
Down = 2
Left = 3
Right= 4
초기 값을 주지 않으면 0부터 차례로 1씩 증가한다
숫자형 이넘은 다음과 같이 사용할 수 있다
enum Response {
No = 0,
Yes = 1,
}
function respond(recipient: string, message: Response): void {
// ...
}
respond("Captain Pangyo", Response.Yes);
숫자형 이넘에서 주의할 점은 선언할 때 만약 이넘 값에 다른 이넘 타입의 값을 사용하면 선언하는 이넘의 첫 번째 값에 초기화를 해줘야 한다
enum Wrong {
A = getSomeValue(),
B, // Error, 초기화가 필요합니다.
}
문자형 이넘은 앞에서 살펴본 숫자형 이넘과 개념적으로는 거의 비슷하지만 런타임에서는 미세하게 차이가 있다.
문자형 이념은 이념 값을 전부 특정문자 또는 특정 값으로 초기화 해줘야 한다.
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}
이넘은 사실 JS의 객체와 너무 유사하게 보이는데 어떤 차이가 있는지 알아보자.
이넘을 사용하면 코드의 안정성이 증가할 것 같다.
참고
https://sambalim.tistory.com/142
https://joshua1988.github.io/ts/guide/enums.html#%EB%B3%B5%ED%95%A9-%EC%9D%B4%EB%84%98-heterogeneous-enums