[TypeScript] Enum

수민🐣·2022년 11월 10일
0

TypeScript

목록 보기
10/16

Enum

여러가지 관련된 상수 값들을 한곳에 모아서 정의할 수 있게 도와주는 타입
자바스크립트에서는 존재 x, 타입스크립트에서 자체적으로 제공

 // JavaScript
    const MAX_NUM = 6;
    const MAX_STUDENTS_PER_CLASS = 10;
    const MONDAY = 0;
    const TUESSDAY = 1;
    const WEDNESDAY = 2;
    const DAYS_ENUM = Object.freeze({ "MONDAY": 0, "TUESSDAY": 1, "WEDNESDAY": 2 });
    const datOfToday = DAYS_ENUM.MONDAY; // 0
 // TypeScript
    type DaysOfWeek = 'Monday' | 'Tuesday' | 'Wednesday'
    enum Days {
        Monday, // 0 -> 0이 아닌 1로 하고 싶으면 Monday = 1 
        Tuesday, // 1
        Wednesday, // 2
        Thursday, // 3
        Friday, // 4
        Satarday, // 5
        Sunday // 6
    }
    // 문자열도 가능 Monday = 'monday' 그렇지만 다음 Tuesday, Wednesday들은 어떤 문자열이 올지 모르기 때문에 수동적으로 전부 다 적어야함

Enum 문제점

let day: Days = Days.Satarday;
    day = Days.Tuesday;
    day = 1; // 문제점 💩 할당이 가능

let daysOfweek: DaysOfWeek = 'Monday';
    daysOfweek = 'Wednesday'; // 다른건 할당이 안됨 무조건 선언한 Monday, Tuesday, Wednesday  

Enum는 충분히 Union으로 대체가 가능해서 Enum를 쓰지 않고 Union으로 사용해서 타입을 보장하자!
Enum를 쓸 수 밖에 없는 경우 : 안드로이드, ios

0개의 댓글