[TS] enum에 대해서 알아보자

Wonhyun Kwon·2023년 6월 1일
0

TypeScript

목록 보기
1/1
post-thumbnail

1. enum ?

  • enum 타입은 enumerated type 의 줄임말로 직역하면 열거하는 타입 이라는 의미를 가진다.
  • 상수 값들 중에서 비슷한 종류들을 묶어두기 위한 용도로 사용된다.



2. enum의 필요성

enum 은 주로 두 가지 경우에 주로 사용된다.

  1. 분야별로 종류를 정의하여 명확하기 사용하기 위함
  2. 하드코딩의 실수를 줄이기 위함

1) 분야별 종류를 한데 묶음

예를 들어, 사용자 권한을 체크하기 위해 관리자 = 0, 회원 = 1, 게스트 = 2 로 관리한다고 하자.

if (userType !== 0) {
  console.log('you are not admin');
}

만약에 userType 의 종류가 매우 많아지거나 적더라도 개발자는 관리자 = 0, 회원 = 1 이라는 것을 기억하고 코딩해야 하는 불편함이 존재한다.

이를 enum 으로 정의하면 다음과 같이 개선된다.

enum Auth {
	admin = 0,
	user = 1,
	guest = 2,
}

if (userType !== Auth.admin) {
	console.log('You are not admin');
}

위 예제는 사용자 권한 분야만 따로 모아서 정의하고 열거하였다. 이렇게 하면 의미를 명확하게 파악하고 사용할 수 있고, 자동완성을 통한 실수 방지, 가독성도 좋아지는 효과가 있다.


2) 하드코딩의 실수를 줄이기

각국 언어의 종류를 나타내는 상수를 정의한다고 치자.
예를 들면, 한국어는 보통 ko 인데, 아무리 간단하더라도 충분히 실수가 나올 수 있고, 또 KO 인지 Ko 인지 헷갈릴 가능성도 충분하다.

이 역시 eunm 으로 정의해두면 하드코딩으로부터의 실수를 줄일 수 있다.

enum Languages {
	korean = 'ko',
	english = 'en',
	japanese = 'jp',
}

console.log(Languages.korean) // ko

하드코딩으로부터의 실수도 줄이면서 의미파악이 쉽고 자동완성까지 된다는 장점이 있다.




3. enum 기본 문법

1) 초기값이 없으면 기본적으로 0부터 시작한다

enum Auth {
	admin,
	user,
	guest
}

console.log(Auth.admin) // 0
console.log(Auth.user) // 1 
console.log(Auth.guest) // 2

2) 문자열을 지정해줄 수 있다.

enum Languages {
	korean = 'ko',
	english = 'en',
	japanese = 'jp',
}

console.log(Languages.korean) // ko
console.log(Languages.english) // en
console.log(Languages.japanese) // jp



4. JS 객체와의 차이점

  • enum한번 생성되면 속성을 추가하거나 수정이 불가능하다. 반대로 JS의 object 는 추가하거나 변경이 가능하다.
  • enum 은 value로 numberstring 만 할당할 수 있다. 반면에 JS의 object 내 value로 모든 것이 가능하다.
  • 결론적으로, enumobject 보다 더 엄격하게 타입을 정의하여 사용할 때 유용하다.
profile
모든 사용자가 만족하는 UI를 만드는 FE 개발자 권원현입니다.

0개의 댓글