우리가 자주 겪는 기본 타입들에 대해 정리해 보고 넘어 가 보자!
- enum → 간단한 상수 값을 구룹화해서 관리 할 때 적합
- object literal → 복잡한 구조 + 다양한 데이터 타입이 필요한 경우에 적합
예시)
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);
예시
const obj = {
a: [1,2,3],
b: 'b',
c: 4
}
키 + 값의 쌍(pair)
으로 구성된 객체
를 정의하는 방식
- enum의 각 멤버는 상수라 number, string 타입의 값만 대입할 수 있지만
객체 리터럴에서는 어떤 타입의 값도 대입을 할 수 있다!- 코드 내에서 사용하기 전에 값이 할당되어야 하므로, 런타임 에러를 방지할 수 있다.
- enum은 간단한 상수 값을 그룹화해서 관리를 할 때 적합
- enum은 상수 값이기 때문에 각 멤버의 값이 변하면 안된다는 조건이 있다
- 객체 리터럴은 멤버의 값이나 데이터 타입을 맘대로 변경할 수 있다.
- 복잡한 구조와 다양한 데이터 타입을 사용해야 할 때는 객체 리터럴을 사용