Enum (열거형)

Enum (열거형)

Enum은 열거형 데이타 타입으로 상수들을 명명하여 나열한 집합을 정의한 것으로, 숫자 (혹은 문자열) 상수를 대신하여 의미있는 레이블을 부여하기 때문에 코드 가독성을 높여 주는 장점이 있다. TypeScript는 enum 키워드를 사용하여 열거형 타입을 정의하며, 숫자와 문자열 상수에 대한 열거형을 지원한다.

숫자 열거형 (numeric enum)

숫자 상수에 레이블을 붙이는 숫자 열거형은 enum 선언문에 지정된 각 레이블에 숫자를 할당된 경우로서, 디폴트로 enum 타입의 첫번째 요소는 숫자 0을 가지며, 다음 요소는 1씩 증가된다. 예를 들어, 아래 Margin 열거형 타입에서 Top은 0, Right는 1, Bottom은 2, Left는 3을 의미한다.

    enum Margin {
        Top,   // 디폴트로 0 
        Right, 
        Bottom, 
        Left
    }

만약 각 enum 요소에 특정한 숫자를 정의하고 싶다면, 각 요소에 임의의 숫자를 부여할 수도 있다. 또한, 첫번째 요소만 값을 지정한 경우, 나머지 다음 요소들을 1씩 증가된 값을 갖게 된다. 예를 들어, 아래 예제에서 Top은 1, Right는 2가 된다.

    enum Margin {
        Top = 1,  
        Right, 
        Bottom, 
        Left
    }

enum 타입은 변수, 속성, 함수의 파라미터 타입 등에 모두 사용할 수 있으며, enum 요소가 갖는 숫자 혹은 레이블 문자로 출력할 수 있다.

    // Color 라는 열거형 타입 정의
    enum Color { Red, Green, Blue };

    // enum 변수 선언 및 값 할당
    let c: Color = Color.Green;

    // enum 변수값 숫자 출력
    console.log(c); // 숫자 1 출력

    // enum 문자열로 출력
    let s: string = Color[1];
    console.log(s); // "Green" 출력

enum 타입은 상수 뿐만 아니라 아래와 같이 간단한 계산식을 사용할 수도 있다. 아래 예제에서 FileAccess.Read 는 2값을 가지며, Write는 4, ReadWrite는 2 | 4 = 6을 계산하여 갖게 된다.

    enum FileAccess {
        None,             // 0
        Read = 1 << 1,    // 2
        Write = 1 << 2,   // 4
        ReadWrite = Read | Write  // 6
    }
문자열 열거형 (string enum)

문자열 열거형은 enum 선언시 각 레이블에 문자열 리터럴을 할당한 경우이다. 문자열 열거형은 숫자가 아니므로 자동 증가와 같은 개념은 없으며, 각 요소마다 독립된 값을 갖는다.

    enum Margin {
        Top = "TOP",  
        Right = "RIGHT", 
        Bottom = "BOTTOM", 
        Left = "LEFT"
    }
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.