타입스크립트 강의를 듣다가 enum에 대해서 까먹어버렸다
TypeScript의 enum문법에 대해서 공부하고 기록합니다.
enum이 뭔가?
타입스크립트에서 enum은 여러 개의 값을 하나의 이름으로 그룹화할 수 있는 강력한 기능입니다.
이를 통해 코드의 가독성을 높이고, 특정 값만 사용할 수 있도록 제한할 수 있습니다.
쉽게 말해, enum은 이름이 붙은 상수들의 집합입니다. 이 집합에 있는 각 값은 숫자 또는 문자열로 표현될 수 있습니다.
enum Color {
Red = "RED",
Green = "GREEN",
Blue = "BLUE",
}
let myColor: Color = Color.Green;
console.log(myColor); // 출력: 'GREEN'
위 코드에서 Color라는 enum을 선언했습니다.
이제 myColor 변수가 Color 타입을 가지며, 이 변수에는 Color.Red, Color.Green, Color.Blue 중 하나의 값만 할당될 수 있습니다.
이는 타입스크립트가 이 변수에 대해 엄격한 타입 검사를 하도록 도와줍니다.
enum의 동작 방식
타입스크립트의 enum은 두 가지 방식으로 동작합니다: 숫자 enum과 문자열 enum입니다.
- 숫자 enum 숫자 enum은 기본적으로 0부터 시작하여 값이 자동으로 증가합니다. 아래의 예제를 통해 살펴보겠습니다.
enum Direction {
North,
South,
East,
West,
}
let myDirection: Direction = Direction.North;
console.log(myDirection); // 출력: 0
myDirection = Direction.East;
console.log(myDirection); // 출력: 2
Direction.North
는 0, Direction.South
는 1, Direction.East
는 2, Direction.West
는 3으로 자동으로 할당됩니다.
Direction.North
를 출력하면 0이 나오는 이유가 여기에 있습니다.
- 문자열 enum 문자열 enum은 각 값에 고유한 문자열을 할당하는 방식입니다.
enum Status {
Active = "ACTIVE",
Inactive = "INACTIVE",
Pending = "PENDING",
}
let currentStatus: Status = Status.Active;
console.log(currentStatus); // 출력: 'ACTIVE'
문자열 enum은 각 값이 독립적인 문자열로 관리되므로, 숫자 enum과 달리 자동 증가하지 않습니다. 대신, 모든 값을 명시적으로 지정해야 합니다.
enum의 장점
이제 enum을 사용하는 이유를 생각해보겠습니다.
타입 안정성: enum을 사용하면 유효하지 않은 값을 사용할 가능성을 줄일 수 있습니다. 예를 들어, 함수에 잘못된 값을 전달하는 실수를 방지할 수 있습니다.
가독성: 코드의 가독성을 높이는 데 도움이 됩니다. 각 상수에 의미 있는 이름을 부여할 수 있어, 코드를 읽는 사람에게 더 명확한 의미를 전달할 수 있습니다.
자동 완성 지원: enum을 사용하면 개발 도구(VS Code 등)에서 자동 완성 기능을 제공하여, 실수를 줄이고 개발 속도를 높일 수 있습니다.
enum의 단점
하지만, enum에도 몇 가지 단점이 있습니다.
코드 복잡성: 너무 많은 enum을 사용하면 코드가 복잡해질 수 있습니다. 특히, 작은 프로젝트에서는 오히려 코드 가독성을 해칠 수 있습니다.
유니언 타입과 비교: 타입스크립트의 유니언 타입은 enum과 유사한 기능을 제공하지만, 더 가볍고 단순합니다. 간단한 경우에는 enum 대신 유니언 타입을 사용하는 것이 더 나을 수 있습니다.
type Direction = "North" | "South" | "East" | "West";
추가적으로 알아두면 좋은 enum 기능
- const enum
const enum은 성능 최적화를 위해 사용됩니다. 컴파일 시점에 실제 값으로 대체되어, 런타임에 불필요한 코드가 생성되지 않습니다.
const enum Direction {
North,
South,
East,
West,
}
let myDirection: Direction = Direction.North;
console.log(myDirection); // 출력: 0
- 리버스 매핑 (Reverse Mapping)
타입스크립트의 숫자 enum은 값을 통해 원래의 이름을 역으로 조회할 수 있습니다.
enum Direction {
North,
South,
East,
West,
}
console.log(Direction[0]); // 출력: 'North'
하지만 문자열 enum은 리버스 매핑이 지원되지 않으니 주의해야 합니다.
결론
타입스크립트의 enum
은 강력한 기능을 제공하여 특정 값들을 그룹화하고, 코드의 가독성과 타입 안전성을 높이는 데 기여합니다.
그러나 무분별한 사용은 코드 복잡성을 높일 수 있으므로, 필요할 때 적절하게 사용하는 것이 중요합니다.
enum
을 통해 안전하고 명확한 코드를 작성하고, 실수를 줄이는 데 도움을 받을 수 있을 것입니다.
앞으로 프로젝트에서 enum
을 적절히 활용하여 더 견고한 코드를 작성해 나가길 기대합니다.