[Typescript] Enum

SOL·2023년 10월 21일
0

TypeScript

목록 보기
6/8
post-thumbnail

Enum은 여러가지 관련된 상수값들을 한 곳에 모아서 정의합니다. 자바스크립트에서는 제공하지 않는 문법이며, 타입스크립트에서 제공하는 문법입니다.


자바스크립트에서는 enum의 개념을 다음과 같이 사용합니다.

const DAYS_ENUM = Object.freeze({"MONDAY": 0, "TUESDAY": 1});
const today = DAYS_ENUM.MONDAY;

타입스크립트에서 enum의 사용은 다음과 같습니다. enum의 이름은 앞글자만 대문자로 적습니다. 만약 값을 직접 할당하지 않는다면 0부터 시작하는 인덱스의 값이 담깁니다.

enum Days {
	MONDAY,
  	TUESDAY,
  	WENDESDAY
}

console.log(Days.MONDAY); //0
console.log(Days.TUESDAY); //1
console.log(Days.WENDESDAY); //2

숫자를 직접 할당하면 해당 숫자부터 1씩 증가하는 값이 담깁니다.

enum Days {
	MONDAY = 1,
  	TUESDAY,
  	WENDESDAY
}

console.log(Days.MONDAY); //1
console.log(Days.TUESDAY); //2
console.log(Days.WENDESDAY); //3

문자를 직접 할당하면 모든 enum값에 문자를 할당해 주어야합니다.

enum Days {
	MONDAY = 'mon',
  	TUESDAY = 'tue',
  	WENDESDAY = 'wen'
}

console.log(Days.MONDAY); //mon
console.log(Days.TUESDAY); //tue
console.log(Days.WENDESDAY); //wen


타입스크립트에서의 Enum의 문제점

타입스크립트에서 enum의 사용은 가급적 피해야합니다. 왜냐하면 enum으로 타입이 지정된 변수에 다른 어떤 숫자도 할당할 수 있는 문제점을 가지고 있기때문입니다. 따라서 타입이 정확하게 보장되지 않습니다. 여러 상수값들을 지정하여 사용하고 싶다면 Union Types로 대체하여 사용 가능합니다.

enum Days {
	MONDAY,
  	TUESDAY,
  	WENDESDAY
}

let today: Days = Days.TUESDAY;
today = 100; //컴파일 에러 발생하지 않음.
profile
개발 개념 정리

0개의 댓글

관련 채용 정보