Today I Learned/TIL 07
2023 - 07 - 25 타입스크립트 ENUM, 객체 리터럴 (Object)
sangwoo_rhie
2023. 7. 31. 22:42
타입스크립트 enum을 쓰는 경우와 객체(Object)를 쓰는 경우
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과 흡사하나, key-value 쌍으로 구성된 객체를 정의하는 방식이다.
const obj = {
a: [1,2,3],
b: 'b',
c: 4
}
enum의 각 멤버는 상수였기 때문에 number, string 타입의 값만 대입할 수 있다. (하지만, 객체 리터럴에서는 어떤 타입의 값도 대입할 수 있다.)
enum은 간단한 상수 값을 그룹화해서 관리할때 적합하고, enum은 상수 값이기 때문에 각 멤버의 값이 변하면 안된다는 조건이 있다.
하지만 객체 리터럴은 멤버의 값이나 데이터 타입을 마음대로 변경할 수 있으므로, 복잡한 구조와 다양한 데이터타입을 사용해야 할 때는 객체 리터럴을 사용한다.