[TypeScript] enum 열거형(enumeration) 이란?

JooSehyun·2024년 4월 12일
0

[Study]

목록 보기
31/35
post-thumbnail

[TypeScript] enum 열거형(enumeration) 이란?


enumTypeScript에서 제공하는 기능으로 열거형 enumeration을 정의하는 데 사용된다. 열거형은 서로 관련된 상수들의 집합을 의미한다.


예제

enum UserRole {
  Admin = 'ADMIN',
  Editor = 'EDITOR',
  Viewer = 'VIEWER'
}

enum UserRole 을 만들고 열거형을 사용하여 사용자의 역할을 설정하고 확인할 수 있다

let userRole: UserRole;

// 사용자의 역할을 설정
userRole = UserRole.Admin;

// 사용자의 역할을 확인
if (userRole === UserRole.Admin) {
  console.log('User is an admin');
} else if (userRole === UserRole.Editor) {
  console.log('User is an editor');
} else if (userRole === UserRole.Viewer) {
  console.log('User is a viewer');
}

사용하는 이유

  • 코드의 가독성 향상 : enum을 사용하면, 코드 내에서 의미 있는 이름을 사용하여 특정 값을 참조할 수 있다. 이는 코드의 가독성을 향상시키고, 코드를 이해하는 데 도움이 된다.

  • 오류 방지 : enum을 사용하면, 특정 값의 집합을 명확하게 정의할 수 있다. 이는 잘못된 값이 사용되는 것을 방지하고, 코드의 안전성을 높인다.


단점

  • 런타임 오버헤드 : TypeScript enum은 런타임에 객체로 존재하므로, 이는 추가적인 메모리와 런타임 오버헤드를 초래할 수 있다. 이는 특히 성능이 중요한 상황에서 문제가 될 수 있다.

  • 문자열 enum의 불변성 : TypeScript enum은 불변하지 않는다. 즉, enum의 값을 런타임에 변경할 수 있다. 이는 예기치 않은 버그를 초래할 수 있다.

  • 타입 안전성 : TypeScript enum은 숫자와 문자열 값 모두를 허용한다. 이는 enum의 값이 예상치 못한 타입으로 변경될 수 있음을 의미한다. 이는 타입 안전성을 저해하고, 버그를 초래할 수 있다.

  • 리팩토링의 어려움 : enum의 멤버를 변경하거나 제거하면, 해당 enum을 사용하는 모든 코드를 찾아서 업데이트해야 한다. 이는 리팩토링을 어렵게 만든다.


Tree shaking

Tree shaking은 모듈에서 실제로 사용되지 않는 코드를 제거하는 프로세스를 말한다. 이는 불필요한 코드를 번들에서 제거하여 최종 출력 파일의 크기를 줄이는 데 도움이 된다.

TypeScriptenumtree shaking에 잘 동작하지 않는다. 이는 enum이 런타임에 실제 JavaScript 객체로 존재하기 때문이다. 따라서 enum의 특정 멤버가 사용되지 않더라도, 전체 enum 객체는 번들에 포함된다. 이는 불필요한 코드가 번들에 포함되어 번들의 크기가 커지는 결과를 초래할 수 있다.

이러한 이유로, 성능이 중요한 애플리케이션에서는 enum 대신 다른 방법을 사용하는 것이 좋다. 예를 들어, const assertion을 사용하여 enum과 유사한 구조를 만들 수 있다.

const UserRole = {
  Admin: 'ADMIN',
  Editor: 'EDITOR',
  Viewer: 'VIEWER'
} as const;

0개의 댓글