Skip to content

Latest commit

 

History

History
119 lines (90 loc) · 3.36 KB

Enum.md

File metadata and controls

119 lines (90 loc) · 3.36 KB

Enum

1. 열거형(Enum)이란?

  • TypeScript의 열거형(Enum)은 특정 값의 집합을 정의할 때 사용됨.

  • Enum은 일반적으로 상수값을 대신하여 사용되므로, 타입스크립트에서는 Enum이 많이 사용

  • Enum은 코드를 더욱 가독성 높게 만들어주고, 오타와 같은 실수를 방지해줌

  • JavaScript에서는 기본적으로 Enum을 지원하지 않지만, TypeScript에서는 문자형 Enum과 숫자형 Enum을 지원하며, 아래와 같은 형태로 지원

    enum Color {
      
      // Color 라는 Enum 정의
      // Enum의 값은 아래 세 개
      Red, 
      Green,
      Blue,
    }

2. 숫자형 열거형(Enum)

  • Enum은 디폴트 값으로 숫자형을 사용하며, 각 값은 자동으로 0부터 시작하여 1씩 증가

  • 아래와 같이 수동으로 값을 지정할 수도 있음

      enum Color {
      Red = 1,
      Green = 2,
      Blue = 4,
      }
  • Enum 값에 대해 산술 연산 수행도 가능

    enum Color {
      Red = 1,
      Green = 2,
      Blue = 4,
    }
    
    let c: Color = Color.Green;
    let greenValue: number = Color.Green;
    let blueValue: number = Color.Blue;
    
      console.log(c); // 2
      console.log(greenValue); // 2
      console.log(blueValue); // 4 

3. 문자형 열거형(Enum)

  • 문자형 Enum은 Enum의 값을 전부 다 특정 문자 또는 다른 Enum 값으로 초기화해야 함

    // Direction 이라는 문자열 기반의 Enum을 정의
    enum Direction {
      Up = "UP",
      Down = "DOWN",
      Left = "LEFT",
      Right = "RIGHT",
      }
    
      // Up, Down, Left, Right 각각에는 문자열 값이 할당되어 있고
      // myDirection 변수를 Direction.Up 으로 초기화 하기에
      let myDirection: Direction = Direction.Up;
    
      // 출력 결과로는 "UP"이 나오게 됨
      console.log(myDirection); // "UP"
    }
  • 문자형 Enum에는 숫자형 Enum과는 다르게 auto-incrementing이 없음.

  • 디버깅 시 숫자형 Enum의 값은 불명확하게 나올 때가 있지만 문자형 Enum은 항상 명확한 값이 나와 읽기 편함.

  • 문자열 기반의 Enum은 주로 외부에서 가져온 값을 TypeScript에서 다루기 위해서 사용됨 (e.g. HTTP 요청 방식을 나타내는 Enum 정의 가능)

    // HTTP 요청 방식을 나타내는 HttpMethod Enum을 정의
    enum HttpMethod {
      Get = "GET",
      Post = "POST",
      Put = "PUT",
      Delete = "DELETE",
    }
    
    // makeRequest 함수는 URL과 HTTP 요청 방식을 인자로 받음
    function makeRequest(url: string, method: HttpMethod) {
      // ...
    }
    
    makeRequest("/api/data", HttpMethod.Post);
  • HTTP 요청 방식을 지정할 때는 HttpMethod.Post와 같이 Enum 값을 사용함.

  • 이렇듯 Enum 사용 시 오타와 같은 실수 방지 가능, 코드의 가독성과 안정성을 높일 수 있음.


4. 역 매핑 (Reverse mappings)

  • 역 매핑은 숫자형 Enum에만 존재하며, 문자형 Enum에는 존재하지 않는 특징임.

  • 열거형의 키(key)로 값(value)을 얻을 수 있고 & 값(value)으로 키(key)를 얻을 수도 있음.

      enum Enum {
          A
      }
    
      // Enum의 키로 값을 얻을 수 있음
      let a = Enum.A;
    
      // 값으로도 Enum의 키를 얻을 수 있음
      let nameOfA = Enum[a]; // "A"