타입스크립트에는 enum(열거형)이 있습니다. 다른 언어와 달리 TS에서는 enum이 안티패턴으로 여겨지는데, 왜 그런지 알아봅시다.

 

enum을 쓰는 것이 좋지 않은 이유

enum ZeroOrOne {
  Zero = 0,
  One = 1
}
const zeroOrOne: ZeroOrOne = 2; // no error!!

 

enum의 가장 큰 문제는 number 할당이 가능하다는 것입니다.

const enum 변수를 만든다고 해도, number 할당이 가능한 건 동일하기 때문에 같은 문제가 있습니다.

 

enum Day {
  Sunday = 'Sunday',
  Monday = 'Monday',
  Tuesday = 'Tuesday',
  Wednesday = 'Wednesday',
  Thursday = 'Thursday',
  Friday = 'Friday',
  Saturday = 'Saturday'
}

또한 enum으로 인해 중복되는 코드 작성이 있을 수도 있습니다.

 

그럼 enum은 언제 써야 되는가

type alias는 트랜스파일시점에 없어집니다. enum은 js 코드로 남습니다.

따라서 런타임에 enum 값을 이용해야 한다면 (ex. iterating) union type으로 대체할 수 없기 때문에 enum을 사용해야 합니다

...

라고 하는데 솔직히 어디다 써먹을지 잘 모르겠습니다.

반응형