프로그래밍/Typescript

TypeScript의 고급 타입: 열거형(Enumeration) 완벽 가이드

shimdh 2025. 4. 3. 09:35
728x90

TypeScript에서 열거형은 코드의 가독성을 높이고, 상수를 의미 있게 표현하는 데 매우 유용한 기능입니다. 이 블로그 포스트에서는 열거형의 기본 개념부터 시작하여, 문자열 열거형, 계산된 값 및 상수 멤버, 혼합된 열거형에 이르기까지 다양한 측면을 깊이 있게 다루어 보겠습니다.

1. 열거형의 기본 개념

열거형은 특정 값 집합을 정의하는 데 사용됩니다. 이는 주로 상태나 옵션을 나타내는 데 유용하며, 개발자가 코드의 의도를 명확히 전달할 수 있도록 돕습니다. 열거형을 사용하면 코드에서 상수 값을 직접 사용하는 것보다 더 직관적이고 의미 있는 방식으로 값을 표현할 수 있습니다.

예시:

enum Color {
    Red,
    Green,
    Blue
}

let myColor: Color = Color.Red;
console.log(myColor); // 출력: 0 (Red의 기본 값)

위의 예제에서 Color라는 열거형을 생성하였으며, 각 색상은 자동으로 0부터 시작하는 숫자를 할당받습니다. 이처럼 열거형을 사용하면 코드의 가독성이 높아지고, 각 상수의 의미를 명확히 할 수 있습니다.

2. 문자열 열거형

TypeScript는 문자열 값을 사용하는 열거형도 지원합니다. 이 경우 각 멤버에 대해 명시적으로 문자열 값을 지정해야 하며, 이를 통해 코드의 가독성을 더욱 높일 수 있습니다. 문자열 열거형은 특히 디버깅 시 유용하게 사용될 수 있습니다.

예시:

enum Direction {
    Up = "UP",
    Down = "DOWN",
    Left = "LEFT",
    Right = "RIGHT"
}

let moveDirection: Direction = Direction.Up;
console.log(moveDirection); // 출력: UP

문자열 열거형을 사용하면 코드가 더 읽기 쉬워지고, 각 방향의 의미를 명확히 전달할 수 있습니다. 이는 특히 팀 프로젝트에서 협업 시 코드의 이해도를 높이는 데 기여합니다.

3. 계산된 값 및 상수 멤버

TypeScript에서는 열거형 멤버에 대해 계산된 값을 사용할 수 있는 기능도 제공하지만, 모든 멤버가 반드시 상수가 될 필요는 없습니다. 이를 통해 더 유연한 열거형 정의가 가능합니다.

예시:

const getValue = () => 42;

enum NumericEnum {
    A = getValue(),
    B,
}

console.log(NumericEnum.A); // 출력: 42
console.log(NumericEnum.B); // 출력: 43 (A + 1)

여기서 NumericEnum의 첫 번째 멤버인 A는 함수 호출 결과로 초기화되며, 나머지 멤버들은 이전 값에 기반하여 자동으로 증가합니다. 이러한 방식은 동적인 값을 필요로 하는 경우에 유용하게 활용될 수 있습니다.

4. 혼합된 열거형

TypeScript에서는 숫자와 문자열을 혼합하여 사용하는 복잡한 형태의 열거형도 가능합니다. 이는 다양한 데이터 유형이 필요한 상황에서 매우 유용하게 쓰일 수 있습니다.

예시:

enum MixedEnum {
    No = 0,
    Yes = "YES"
}

let answer1: MixedEnum = MixedEnum.No;   // 숫자 enum 사용
let answer2: MixedEnum = MixedEnum.Yes;   // 문자열 enum 사용

console.log(answer1); // 출력 : 0 
console.log(answer2); // 출력 : YES 

혼합된 형식의 열거형은 다양한 데이터 유형을 필요로 하는 상황에서 유용하게 사용될 수 있으며, 이를 통해 코드의 유연성을 높일 수 있습니다.

결론

고급 타입인 열거형은 TypeScript 코드를 더 깔끔하고 유지보수가 용이하게 만들어주는 중요한 구성 요소입니다. 이를 통해 개발자는 특정한 범위 내에서만 가능한 값들을 명확히 하여 오류를 줄이고 의도를 분명히 전달할 수 있습니다. 실제 프로젝트에서도 자주 활용되므로, 이러한 개념들을 잘 이해하고 적용하는 것이 중요합니다. 열거형을 적절히 활용하면 코드의 품질을 높이고, 팀원 간의 협업을 더욱 원활하게 할 수 있습니다.

728x90