열거형으로 이름이 있는 상수 들의 집합을 정의할 수 있습니다. 열거형을 사용하면 의도를 문서화 하거나 구분되는 사례 집합을 더 쉽게 만들 수 있습니다. Typescript는 숫자와 문자열 기반 열거형을 제공합니다.
다른 언어를 배워 보신 분들이라면 친숙하게 느낄 수 있는 숫자 열거형에 대해서 먼저 배워 보겠습니다.
enum Direction {
Up = 1,
Down,
Left,
Right,
}
위 코드에서 Up 이 1로 지정 되었습니다. 그러면 뒤따르는 멤버들은 자동으로 1씩 증가된 값을 갖습니다. 즉 Down은 2 Left는 3 Right는 4 입니다.
enum Direction {
Up,
Down,
Left,
Right,
}
위 경우는 0부터 1씩 증가된 값을 가집니다. 자동 증가하는 기능은 멤버 값 자체에는 신경 쓰지 않지만, 각 값이 같은 열거형의 다른 값과 구별돼야 하는 경우에 유용합니다.
문자열 열거형은 유사한 개념이지만 런타임에서 열거형의 동작이 약간 다릅니다. 각 멤버들은 문자열 리터럴 또는 다른 문자열 열거형의 멤버로 상수 초기화 해야 합니다.
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}
만약 당신이 숫자 열거형을 이용해서 디버깅하고 있고 그 값을 읽어야 한다면, 종종 그 값이 불확실한 경우가 있습니다. 숫자만으로는 이것이 어떤 의미인지 유의미한 정보를 제공 해주지 않기 때문입니다, 반면 문자열 열거형을 이용하면 코드를 실행할 때, 열거형 멤버에 지정된 이름과는 무관하게 유의미하고 읽기 좋은 값을 이용하여 실행할 수 있습니다.
기술적으로 열거형은 숫자와 문자를 섞어서 사용할 수 있지만 굳이 그렇게 할 이유는 없습니다.
enum BooleanLikeHeterogeneousEnum {
No = 0,
Yes = "YES",
}
확실하게 JavaScript 런타임에서 장점을 취하려는 것이 아니라면, 이렇게 사용하지 않는 것을 권장합니다.