Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트에서 열거형(Enum) 정의하는 방법

자바스크립트는 Java나 C++ 같은 언어와 달리 열거형(Enum)을 기본적으로 지원하지 않습니다. 하지만 Object.freeze() 메서드를 활용하면 열거형과 유사한 구조를 손쉽게 만들 수 있습니다.

Object.freeze()로 열거형 흉내 내기

기본 원리는 간단합니다. 먼저 열거할 모든 상수 값을 프로퍼티로 담고 있는 객체를 생성한 뒤, Object.freeze()로 해당 객체를 동결(freeze)합니다. 객체가 동결되면 새로운 프로퍼티 추가, 기존 프로퍼티 수정 및 삭제가 모두 차단되므로, 열거형처럼 고정된 값 집합을 안전하게 사용할 수 있습니다.

예제

const Color = {
    RED: 1,
    BLUE: 2,
    GREEN: 3,
    YELLOW: 4
};
Object.freeze(Color);

// 사용 예시:
let carColor = Color.BLUE;

// 새로운 색상을 추가하려는 시도는 조용히 무시됩니다:
Color.WHITE = 5;
console.log(Color);

출력 결과

{ RED: 1, BLUE: 2, GREEN: 3, YELLOW: 4 }

주의 사항

동결된 객체에 새 프로퍼티를 추가하려 하면 에러가 발생하지 않고 조용히 무시됩니다(단, 엄격 모드 'use strict' 환경에서는 TypeError가 발생합니다). 따라서 코드 작성 시 의도치 않은 값 변경이 일어나지 않도록 주의해야 합니다.

참고로, TypeScript를 사용한다면 enum 키워드로 자체적인 열거형 문법을 제공받을 수 있으며, 이 경우 컴파일 타임에 더 강력한 타입 검사를 활용할 수 있습니다.