오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Language/Javascript, typescript

Typescript에서 Enum을 사용하지 않는게 좋은 이유

junha6316 2022. 2. 23. 21:29

https://engineering.linecorp.com/ko/blog/typescript-enum-tree-shaking/

 

위 문서를 정리한 내용입니다.

 

한줄 정리 : Tree-shaking 측면에서 좋지않으니 Enum 대신 UnionType을 사용하도록 하자!

 

타입 스크립트 Enum

타입스크립트에서 enum은 아래와 같이 사용가능함

enum Color (
    RED="red",
    GREEN="greee",
    BLUE="blue"
)

console.log(Color.Red)
// "red"

위 코드는 자바스크립트로 트랜스파일 될 때 아래와 같은 형식으로 변경된다.

export var Color;
(function (Color){
   Color["RED"] = "red";
   Color["Blue"] = "blue";
   Color["Green"] = "green";
})(Color || (Color = {}));

enum은 타입스크립트가 자체적으로 구현했기 때문에 타입 스크립트에서 자바스크립트로 트랜스파일 될때 즉시실행함수(IIFE)를 포함한 코드 생성. 하지만 Rollup과 같은 번들러는 IIFE를 사용하지 않는 코드로 판단하지 않아서 Tree-shaking이 되지 않음.

즉 실제로 import만 하고 사용하지 않더라도 최종 번들에 포함된다.

 

 

대안: UnionTypes

대신 Union 타입을 사용하도록 하자!

const Color ={
    RED:"red",
    GREEN:"green",
    BLUE:"blue"
} as const

type Color = typeof Color[keyof typeof Color];

위 코드는 아래와 같이 트랜스 파일된다.

const Color = {
    RED : "red",
    BLUE:"blue",
    GREEN:"green"

}