Enum
4 min read

Enum

Typescript의 Enum에 대한 정리


Enum

enum은 Typescript에서 사용되는키워드 입니다.


enum은 상수들의 집합을 정의하기 위해 사용됩니다. 주로 여러 개의 관련된 상수들을 그룹화하고, 해당 상수들을 타입으로 사용할 수 있도록 해줍니다.


예시를 들어 설명해보도록 하겠습니다.

	enum Colors{
		Red = "RED",
		Green = "GREEN",
		Blue = "BLUE",
	}
 
    enum Bool{
    	False = 0,
    	True = 1,
    }
 

위와 같은 다양한 상수들을 정의하는 enum을 정의할 수 있습니다.

또한 기본적으로 value가 number인 경우에는 아래와 같은 양방향 매핑을 지원합니다.

	console.log(Bool['False']); // 0
	console.log(Bool[0]) // 'False'

enum은 다른 언어에서는 이미 존재했던 문법으로, 그 장점을 대부분 공유합니다. 대표적인 장점으로는 다음과 같은 것들이 있습니다.

장점

하지만 단점도 굉장히 많은 기능입니다.

단점

1. Tree Shaking이 되지 않는다.

enum은 기본적으로 Js에서는 존재하지 않던 기능입니다. 따라서 이를 트랜스파일하여 변환하게 됩니다.

export var Bool;
(function (Bool) {
  Bool[(Bool["False"] = 0)] = "False";
  Bool[(Bool["True"] = 1)] = "True";
})(Bool || (Bool = {}));

enum은 위와 같이 IIFE의 형태의 코드로 컴파일링되게 됩니다. 그런데 번들러는 IIFE를 '사용되지 않는 코드'라고 판단할 수 없습니다! 때문에 enum으로 만든 Bool은 import만 하고 실제로는 사용하지 않더라도 최종 번들에는 포함되게 되는 겁니다.

다만 const enum을 사용하게 되면 보다 간결하게 변환되며, Tree Shaking도 적용되게 됩니다. 하지만 이는 다른 추가적인 문제점이 존재합니다.