본문 바로가기
TIL

TypeScript 강의 (6) ( enum, object literal )

by 황민도 2024. 7. 28.

내일배움캠프 스파르타 코딩클럽

 

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);

 또한, 컴파일 시에 자동으로 숫자 값으로 매핑되므로 따로 값을 할당할 필요가 없다.

 ( ex: enum Colors { red, green, blue } 라면 red 는 0 green 은 1, blue는 2 로 자동 매핑 )

 - 하지만 특정 숫자 값으로 매핑되어야 하면 그것은 직접 할당을 해주면 된다.

 ( ex: enum colors { red = 1, green = 2, blue = 4} 처럼 직접 값을 지정할 수 있다. )

 

 

object literal( 객체 리터럴 )

코드 예시: 

const obj = {
  a: [1,2,3],
  b: 'b',
  c: 4
}

 

객체 리터럴은 키 + 키값의 쌍(pair)로 구성된 객체를 정의하는 방식

위 예제 코드에서는 a, b, c 라는 키가 있고 각각 [1,2,3,], 'b', 4 라는 값으로 바인딩 되어있다.

객체 리터럴에서는 어떤 타입의 값도 대입을 할 수 있다.

 

enum OR object literal

enum

- enum은 간단한 상수 값을 그룹화 해서 관리할 때 적합하다.

- 또한, enum은 상수 값이기 때문에 각 멤버의 값이 변하면 안된다는 조건이 있다.

 

객체 리터럴

 - 객체 리터럴은 멤버의 값이나 데이터 타입을 맘대로 변경할 수 있다.

 - 복잡한 구조와 다양한 데이터 타입을 사용해야 할 때는 객체 리터럴을 사용하면 좋다.

 - 예시 : 

let status = {
    Pending: 0,
    Approved: 1,
    Rejected: 2
};

// 객체 리터럴은 속성 값과 데이터 타입을 변경할 수 있습니다.
status.Pending = 10; // 값 변경 가능
console.log(status.Pending); // 출력: 10

status.NewStatus = 3; // 새로운 속성 추가 가능
console.log(status.NewStatus); // 출력: 3

status = {
    Pending: "PENDING",
    Approved: "APPROVED",
    Rejected: "REJECTED"
}; // 객체 전체를 재정의 가능
console.log(status.Pending); // 출력: "PENDING"