이 포스팅에서는 타입스크립트에서 enum이란 무엇이고, 런타임 동작 시에 어떻게 동작하는지, 왜 const enum을 쓰는 것이 더 좋은지 알아보도록 할 것입니다. 또, 일반적인 enum과 const enum의 차이점과 컴파일 후 각각이 코드에 어떤 영향을 미치는지에 대해서도 다룰 것입니다.
2. Enum 이란?
Enum은 자바스크립트의 확장 type-level이 아닌 TypeScript의 몇 안 되는 기능 중에 하나입니다. - 공식 TS 문서
enum은 enumeration(열거형)의 줄임말로, 명명된 상수 집합을 정의할 수 있게 해줍니다. 여기서 말하는 상수는 애플리케이션에서 보통 '고유한 값'을 나타내기 위해 사용하는데요. 예를 들어, 'on', 'off' 기능이 있는 스위치 버튼의 경우 enum을 사용하여 이러한 상태를 나타내는 것이 가능합니다.
enum이 TypeScript에서 어떻게 사용되는지 보도록 하겠습니다.
enum Switch {
ON,
OFF
}
이 enum은 타입스크립트의 다른 타입들과 마찬가지로 사용하면 됩니다.
3. 런타임에서 Enum의 동작
일반 enum과 const enum의 차이를 이해하기 위해, 먼저 타입스크립트가 코드를 자바스크립트로 컴파일한 후에 어떤 일이 발생하는지를 살펴봐야 합니다.