본문 바로가기
2024~/React

[타입스크립트] 고급 타입- enum

by Or0i쿠 2025. 5. 31.

enum (열거형)

이름이 있는 상수들의 집합을 정의하는 문법. 관련된 상수들을 하나의 그룹으로 묶어 관리할 때 유용

특징 숫자형 Enum 문자열 Enum  const enum
값 할당 자동(0부터 증가) 또는 명시적   명시적으로 문자열 할당 필수 명시적 할당 (숫자/문자열)
컴파일 결과 객체 (양방향 매핑)  객체 (단방향 매핑)  사용된 곳에 값 인라인
런타임 오버헤드 있음 (객체 생성 있음 (객체 생성 없음 (코드에 남지 않음)
주요 장점 값->이름 찾기 가능 가독성, 타입 안전성 성능, 번들 크기 최적화

숫자형 Enum

  • 값을 할당 X : 0부터 시작하여 1씩 증가하는 숫자가 자동으로 할당
    특정 멤버에 값을 할당 : 그 다음 멤버는 할당된 값부터 1씩 증가
  • 객체 형태로 생성.
    역방향 매핑(Reverse Mapping) : 
    멤버 이름으로  접근 가능
    으로 멤버 이름 접근 가능
enum Direction {
  Up,    // 0
  Down,  // 1
  Left,  // 2
  Right, // 3
}

let myDirection: Direction = Direction.Up; // myDirection은 0 값을 가짐
console.log(Direction.Down); // 출력: 1

특정 멤버에 값을 할당하는 예시 :

enum Status {
  Success = 200,
  NotFound = 404,
  ServerError = 500,
}
let responseStatus: Status = Status.Success; // responseStatus는 200 값을 가짐
console.log(Status.NotFound); // 출력: 404

역방향 매핑 : 

var Direction;
(function (Direction) {
    Direction[Direction["Up"] = 0] = "Up";
    Direction[Direction["Down"] = 1] = "Down";
    Direction[Direction["Left"] = 2] = "Left";
    Direction[Direction["Right"] = 3] = "Right";
})(Direction || (Direction = {}));

console.log(Direction.Up);    // 0
console.log(Direction[0]);    // "Up" (역방향 매핑)

문자열 Enum

  • 모든 enum 멤버에 명시적으로 문자열 리터럴 값을 할당 필
  • 객체 형태로 생성 but 역방향 매핑은 생성 X
  • 숫자형 Enum처럼 자동 증가 기능은 없다.
enum Color {
  Red = "RED",
  Green = "GREEN",
  Blue = "BLUE",
}
let favoriteColor: Color = Color.Blue;
console.log(Color.Red); // 출력: "RED"
var Color;
(function (Color) {
    Color["Red"] = "RED";
    Color["Green"] = "GREEN";
    Color["Blue"] = "BLUE";
})(Color || (Color = {}));

console.log(Color.Red); // "RED"
// console.log(Color["RED"]); // undefined (역방향 매핑 없음)

Const Enum

  • enum 선언 앞에 const 키워드를 붙임
  •  값이 인라인으로 대체
const enum Theme {
  Light = "LIGHT",
  Dark = "DARK",
}

let currentTheme: Theme = Theme.Light; // 컴파일 후 이 자리는 "LIGHT" 문자열로 대체됨
console.log(Theme.Dark); // 컴파일 후 이 자리는 "DARK" 문자열로 대체됨

 

타입스크립트 with 리액트

🚀 타입스크립트 강의 – 실무 필수 스킬 완벽 정리! 자바스크립트 개발자라면 이제 타입스크립트(TypeScript)는 선택이 아닌 필수! 이 강의에서는 타입스크립트의 기초부터 실전 활용까지 배우며

codingnoona.thinkific.com

문제 : 

 

문제은행 4강 - 고급타입 - HackMD

작업의 상태는 다음과 같습니다:

hackmd.io