ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TS] Enum(열거형) 타입
    TypeScript 2024. 6. 29. 16:20

     

    Enum(열거형) 타입

    열거형 타입은 여러 개의 값을 나열하는 용도로 사용합니다.

    실제로 enum은 컴파일 될 때 다른 타입들 처럼 사라지지 않고 자바스크립트 객체로 변환됩니다. 

     

    // Enum 컴파일 전
    enum Role {
      ADMIN,
      USER,
      GUEST,
    }
    
    enum Language {
      korean = "ko",
      english = "en",
    }
    
    // 컴파일 후 자바스크립트 객체로 변환된다.
    var Role;
    (function (Role) {
        Role[Role["ADMIN"] = 0] = "ADMIN";
        Role[Role["USER"] = 1] = "USER";
        Role[Role["GUEST"] = 2] = "GUEST";
    })(Role || (Role = {}));
    var Language;
    (function (Language) {
        Language["korean"] = "ko";
        Language["english"] = "en";
        Language["japanese"] = "jp";
    })(Language || (Language = {}));

     

     

    본격적으로 Enum(열거형) 타입에 대해 알아 봅시다. 

     

    enum Role {
        ADMIN, 
        USER, 
        GUEST,
    }

     

     

    3개의 값 ADMIN, USER, GUEST를 나열한 enum 입니다. 

    enum의 각 값에는 숫자를 할당할 수 있습니다. 

     

    enum Role {
      ADMIN = 0,
      USER = 1,
      GUEST = 2,
    }

     

     

    그리고 신기하게도 enum은 숫자를 직접 할당하지 않아도 0부터 1씩 늘어나는 값으로 자동으로 할당됩니다. 

     

    enum Role {
      ADMIN, // 0 할당 (자동)
      USER, // 1 할당 (자동)
      GUEST, // 2 할당 (자동)
    }

     

     

    만약 ADMIN 에 10을 할당했다면 10에서 1씩 증가하며 증가합니다.

     

    // enum 타입
    // 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입
    
    enum Role {
      ADMIN = 10, // 10 할당 
      USER,       // 11 할당(자동)
      GUEST,      // 12 할당(자동)
    }

     

     

    그리고 enum의 값 들은 프로퍼티의 값으로 각각 사용 가능합니다. 

     

    // enum 타입
    // 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입
    
    enum Role {
      ADMIN = 10, // 10 할당 
      USER,       // 11 할당(자동)
      GUEST,      // 12 할당(자동)
    }
    
    const user1 = {
      name: "이놈",
      role: Role.ADMIN, // 10
    };
    
    const user2 = {
      name: "정진경",
      role: Role.USER, // 11
    };

     

    위의 예시와 같이 값이 모두 숫자인 enum숫자형 enum 혹은 숫자 열거형 타입이라고 합니다. 

     

    문자형 열거형

    enum의 멤버에는 숫자 말고도 문자열 값도 할당할 수 있습니다.

     

    enum Language {
      korean = "ko",
      english = "en",
    }

     

     

    위와 같이 값이 문자열인 enum을 특별히 문자열 enum 이라고 부릅니다. 

     

    enum Role {
      ADMIN,
      USER,
      GUEST,
    }
    
    enum Language {
      korean = "ko",
      english = "en",
    }
    
    const user1 = {
      name: "정진경",
      role: Role.ADMIN, // 0
      language: Language.korean,// "ko"
    };

     

    enum을 사용하면 user1.language 같은 프로퍼티에 실수로 ko라고 적었어야 할 것을 오타가 발생해 kos로 적거나 하는 실수를 방지할 수 있습니다. 

     

    반응형

    댓글

Designed by Tistory.