enum
- enum 은 열거형 데이터 타입
- 상수의 그룹화를 위해서는 enum이 아주 좋은 타입이 됨.
enum 의 장점
- 코드의 가독성을 높이고 명확한 상수값 정의 가능
- 컴파일 시에 자동으로 숫자값으로 매핑되어 따로 값을 할당할 필요가 없음 (특정 숫자 값으로 매핑되어야 한다면 그것은 직접 할당)
enum UserRole {
ADMIN = "ADMIN",
EDITOR = "EDITOR",
USER = "USER",
}
enum UserLevel {
NOT_OPERATOR, // 0
OPERATOR // 1
}
function checkPermission(userRole: UserRole, userLevel: UserLevel): void {
if (userLevel === UserLevel.NOT_OPERATOR) {
console.log('당신은 일반 사용자 레벨이에요');
} else {
console.log('당신은 운영자 레벨이군요');
}
if (userRole === UserRole.ADMIN) {
console.log("당신은 어드민이군요");
} else if (userRole === UserRole.EDITOR) {
console.log("당신은 에디터에요");
} else {
console.log("당신은 사용자군요");
}
}
const userRole: UserRole = UserRole.EDITOR;
const userLevel: UserLevel = UserLevel.NOT_OPERATOR;
checkPermission(userRole, userLevel);
object literal
일단 육안으로는 enum과 매우 흡사하나 enum 키워드 대신 const 혹은 let 키워드를 사용한다.
객체 리터럴은 키 + 값의 쌍 (pair) 로 구성된 객체를 정의하는 방식
const obj = {
a: [1,2,3],
b: 'b',
c: 4
}
object literal 의 장점
- enum 의 각각은 상수였기 때문에 number, string 타입의 값만 대입할 수 있었다.
- 하지만 객체 리터럴에서는 어떤 타입의 값도 대입을 할 수 있음
- 객체 리터럴은 다양한 데이터 타입을 지원하며 유연한 구조를 가질 수 있다.
- 또한, 코드 내에서 사용하기 전 값이 할당되어야 하므로, 런타임 에러를 방지한다.
enum 을 쓰면 좋은경우
- enum은 간단한 상수 값을 그룹화 해서 관리할 때 적합
- enum은 상수 값이기 때문에 각 멤버의 값이 변하면 안된다는 조건이 있음
객체 리터럴을 쓰면 좋은 경우
- 객체 리터럴은 멤버의 값이나 데이터 타입을 마음대로 변경 가능
- 복잡한 구조와 다양한 데이터 타입을 사용해야 할 때
'TypeScript' 카테고리의 다른 글
[TypeScript] 프로젝트 세팅 (0) | 2023.07.26 |
---|---|
[TypeScript] 유틸리티 타입 (2) | 2023.07.26 |
[TypeScript] Any, unknown, union (0) | 2023.07.25 |
[TypeScript] const, readonly (0) | 2023.07.25 |
[TypeScript] 기본 타입 익히기 (0) | 2023.07.25 |