[TypeScript] 이넘(Enum)

이넘(Enum)은 타입스크립트에서 제공하는 특별한 타입으로, 명명된 상수들의 집합을 정의하는 데 사용된다. 이넘(열거형)은 코드의 가독성을 높이고, 관련된 상수들을 그룹화하는 데 유용하다.

숫자 열거형, 문자열 열거형, 혼합 열거형 등 다양한 형태로 사용할 수 있어 여러 상황에 적용할 수 있다.


🚀 이넘의 선언과 기본 사용

이넘은 enum 키워드를 사용하여 정의한다. 기본적으로 이넘의 각 멤버는 0부터 시작하는 숫자 값을 가진다.

enum Direction {
  Up,
  Down,
  Left,
  Right,
}

console.log(Direction.Up); // 출력: 0
console.log(Direction.Down); // 출력: 1
console.log(Direction.Left); // 출력: 2
console.log(Direction.Right); // 출력: 3

🔢 숫자 열거형

숫자 열거형은 이넘의 기본 형태이다.
각 멤버는 명시적으로 숫자 값을 할당할 수 있으며, 할당하지 않은 멤버는 이전 멤버의 값에 1을 더한 값을 가진다.

enum StatusCode {
  OK = 200,
  BadRequest = 400,
  Unauthorized, // 401
  Forbidden, // 402
}

console.log(StatusCode.OK); // 출력: 200
console.log(StatusCode.Unauthorized); // 출력: 401

🎨 문자열 열거형

문자열 열거형은 각 멤버에 문자열 값을 할당하는 방식이다.
문자열 열거형의 모든 멤버는 반드시 초기화되어야 한다.

enum Color {
  Red = "RED",
  Green = "GREEN",
  Blue = "BLUE",
}

console.log(Color.Red); // 출력: "RED"
console.log(Color.Green); // 출력: "GREEN"

🔀 문자열 및 숫자 혼합 열거형

타입스크립트는 문자열과 숫자 값을 혼합하여 사용하는 열거형을 지원한다.

enum Mixed {
  A,
  B = "B",
  C = 100,
  D,
}

console.log(Mixed.A); // 출력: 0
console.log(Mixed.B); // 출력: "B"
console.log(Mixed.C); // 출력: 100
console.log(Mixed.D); // 출력: 101

이렇게 하면 다양한 유형의 값을 하나의 이넘으로 처리할 수 있다.


🧮 이니셜라이즈된 열거형

이니셜라이즈된 열거형은 멤버의 값을 계산된 값으로 초기화할 수 있다. 이 방식은 값의 조합이나 비트 연산과 같은 로직을 포함할 때 유용하게 사용된다.

enum FileAccess {
  Read = 1 << 0, // 1
  Write = 1 << 1, // 2
  Execute = 1 << 2, // 4
}

console.log(FileAccess.Read); // 출력: 1
console.log(FileAccess.Write); // 출력: 2
console.log(FileAccess.Execute); // 출력: 4

💡 열거형의 사용 예제

이넘은 다양한 상황에서 유용하게 사용될 수 있다.
예를 들어, API 응답 상태를 표현하거나 사용자 역할을 정의하는 데 사용할 수 있다.

enum ApiResponse {
  Success = "SUCCESS",
  Error = "ERROR",
  Pending = "PENDING",
}

function handleResponse(response: ApiResponse) {
  switch (response) {
    case ApiResponse.Success:
      console.log("요청이 성공했습니다.");
      break;
    case ApiResponse.Error:
      console.log("오류가 발생했습니다.");
      break;
    case ApiResponse.Pending:
      console.log("요청이 처리 중입니다.");
      break;
  }
}

handleResponse(ApiResponse.Success); // 출력: "요청이 성공했습니다."

이넘은 타입스크립트에서 관련된 상수들을 그룹화하고 코드의 가독성을 높이는 데 매우 유용한 기능이다.

이넘을 적절히 사용하면 코드의 유지보수성안정성을 크게 향상시킬 수 있다.

Categories:

Updated:

Leave a comment