💡
enum
: 여러 관련된 상수 값들을 한 곳에 모아서 정리할 수 있도록 하는 타입.
열거형 타입 선언 시 사용. 열거형 타입의 각 원소는 값으로 사용될 수 있고, 타입으로 사용될 수도 있다
JavaScript에서는 enum type이 존재하지 않으므로,
TypeScript에서 저체적으로 제공하는 타입 중 하나.
JavaScript에서, 보통 상수(변하지 않는 수, constant)를 선언할 때에는 변수명을 대문자로 선언하지만,
TypeScript에서enum
선언할 때에는 첫 글자만 대문자로 선언한다.
// JavaScript
const MAX_NUM = 6;
const MAX_STUDENTS_PER_CLASS = 10;
const MONDAY = 0;
const TUESDAY = 1;
const WEDNESDAY = 2;
// JavaScript에서는 관련된 데이터를 묶을 수 있는 타입이 별도 존재하지 않으므로, 아래처럼 Object로 구현.
const DAYS_ENUM = Object.freeze({ MONDAY: 0, TUESDAY: 1, WEDNESDAY: 2 });
const dayOfToday = DAYS_ENUM.MONDAY;
// TypeScript
enum Days {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
}
console.log(Days.Monday);
let day: Days = Days.Saturday;
day = Days.Tuesday;
타입스크립트에서 enum
을 사용하면
console.log(Days.Monday);
는 0이 출력됨console.log(Days.Monday);
는 1이 출력됨console.log(Days.Monday);
는 monday이가 출력됨enum Days {
Monday,
Tuesday,
Wednesday,
}
let day: Days = Days.Monday;
day = 10; // enum type이 지정된 변수에 다른 숫자를 할당해도 에러가 나지 않는다 😱
📌 타입스크립트에서 enum
타입은 사용하지 않는다. 이유는,
따라서 타입스크립트에서는 enum 대신 union 타입을 사용한다.