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
'2024~ > React' 카테고리의 다른 글
| [타입스크립트] 교차타입 (1) | 2025.06.01 |
|---|---|
| [타입스크립트] 고급타입 - any, unknown, void, never~ (0) | 2025.05.31 |
| [타입스크립트] 3강- type, interface (2) | 2025.05.27 |
| [타입스크립트] 객체 & 배열 & 튜플 타입 - 조합의 시작 (1) | 2025.05.26 |
| [타입스크립트] 원시 타입 (1) | 2025.05.22 |