🎉 berenickt 블로그에 온 걸 환영합니다. 🎉
Lang
TypeScript
04-Enum(열거형)

1. Enum

  • Enum = 여러 개의 관련된 상수들을 모아주는 타입
    • enumerated type의 약어,
    • 무언가 (늘여놓은, 나열, 열거)하는 타입
    • cf. enumberate = 여러가지 것들을 축 늘여놓은 그림
  • 열거자 이름들은 일반적으로 해당 언어의 상수 역할을 하는 식별자
  • 다른 언어에서는 Enum이 유용하지만, TS에서는 가능한 Enum 쓰지 않는 것을 권장
    • 왜냐하면, Enum 타입으로 선언된 변수에 다른 어떤 숫자로 할당이 가능하다는 문제점이 존재
    • 대신 Union 타입( | )을 사용하기
1
// JavaScript에서 Enum은 존재X, 직접 독립적인 상수를 정의해서 사용 ---------
2
const MAX_NUM = 6
3
const MAX_STUDENTS_PER_CLASS = 10
4
const MONDAY = 0
5
const TUESDAY = 1
6
const WEDNESDAY = 2
7
const DAYS_ENUM = Object.freeze({ MONDAY: 0, TUESDAY: 1, WEDNESDAY: 2 })
8
const dayOfToday = DAYS_ENUM.MONDAY // 0이 할당됨
9
10
// TypeScript ----------------------------------------------------------------
11
// 맨 앞의 첫글자는 대문자로
12
type DaysOfWeek = 'Monday' | 'Tuesday' | 'Wednesday'
13
enum Days {
14
Monday,
15
Tuesday,
16
Wednesday,
17
Thursday,
18
Friday,
19
Saturday,
20
Sunday,
21
}
22
// 자동으로 맨 앞에서 0부터 값을 할당해줌
23
24
console.log(Days.Monday) // 0이 출력
25
let day: Days = Days.Saturday // 5
26
day = Days.Tuesday // 4
27
day = 10 // Enum 타입으로 선언된 변수에 다른 어떤 숫자로 할당이 가능하다는 문제점이 존재
28
console.log(day) // 10이 출력
29
30
let dayOfweek: DaysOfWeek = 'Monday'
31
dayOfweek = 'Wednesday'