ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (TypeScript) - TypeScript Enum 타입
    개발/TypeScript 2025. 8. 19. 11:48
    반응형

    ■ 열거형 타입

     : 열거형 타입 enum 은 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입을 말한다.

     

    enum Role {
        ADMIN = 0,
        USER = 1,
        GUSET = 2,
    }
    
    const user1 = {
        name: '이정환',
        role: Role.ADMIN, // 0 <- 관리자
    };
    
    const user2 = {
        name: '홍길동',
        role: Role.USER, // 1 <- 일반 유저
    };
    
    const user3 = {
        name: '송길동',
        role: Role.GUSET, // 2 <- 게스트
    };

     

    그러면 enum 은 왜 사용할까?

     

    enum 으로 지정하면 role 0 으로 저장되지만, 

    enum 의 Role.ADMIN 과 같이 문자로 정의된 것을 보고 어떤 역할을 하는 지 개발자가 바로 알아볼 수 있다.

     

    이렇게 숫자로 지정되는 enum 을 숫자형 enum 이라고 한다.

     

    enum Role {
        ADMIN,
        USER,
        GUSET,
    }

     

    숫자를 따로 지정을 해주지 않아도 0부터 1씩 추가되어 순서대로 지정되니 생략해도 무방하다.

     

    enum Language {
        korea = 'ko',
        english = 'en',
    }

     

    enum 은 숫자 말고 문자로도 지정이 가능하다.

     

    const user1 = {
        name: '이정환',
        role: Role.ADMIN, // 0 <- 관리자
        language: Language.korea,
    };
    
    const user2 = {
        name: '홍길동',
        role: Role.USER, // 1 <- 일반 유저
        language: Language.english,
    };
    

     

    더불어 enum을 사용하면 개발자들은 헷갈리지 않을 수 있다.

     

    왜냐하면 language 를 문자 그대로 'ko' 이런식으로 표기했다 생각해보자.

    그러면 다음에 객체를 생성할 때 내가 한국어를 지정할 때 'ko'  를 썼는지 'Ko' 를 썼는지 기억이 안날 수 있다. 

     

    그러나 enum 을 사용하면 기존에 지정된 enum 만 불러오면 틀리지 않고 객체 생성이 가능한 것이다.

     

    var Role;
    (function (Role) {
        Role[Role["ADMIN"] = 0] = "ADMIN";
        Role[Role["USER"] = 1] = "USER";
        Role[Role["GUSET"] = 2] = "GUSET";
    })(Role || (Role = {}));

     

    그리고 enum 은 특이하게 컴파일을 해도 기존의 TypeScript 가 컴파일하면 타입이 사라졌던 것과는 다르게 enum 은 자바스크립트 객체로 변환되어 남아있게 된다.

     

        language: Language.english,

     

    따라서 코드 상에서 다음과 같이 값을 사용하듯이 사용이 가능하다.

    반응형
Designed by Tistory.