[TIL]2023.07.27 Type Script 적응기 고급 타입 정리 (enum , object literal)😶

Nick·2023년 7월 28일
0

TIL: 오늘을 돌아보자

목록 보기
55/95
post-thumbnail
post-custom-banner

우리가 자주 겪는 기본 타입들에 대해 정리해 보고 넘어 가 보자!

기본 타입 정리

enum , object literal

  • enum → 간단한 상수 값을 구룹화해서 관리 할 때 적합
  • object literal → 복잡한 구조 + 다양한 데이터 타입이 필요한 경우에 적합

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

예시

const obj = {
 a: [1,2,3],
 b: 'b',
 c: 4
}
  • 겉으로 보면 enum과 매우 흡사 하지만 enum이라는 키워드가 아니고 const (혹은 let) 이라는 키워드를 사용.
  • 객체 리터럴은 키 + 값의 쌍(pair)으로 구성된 객체를 정의하는 방식

object literal 장점

  • enum의 각 멤버는 상수라 number, string 타입의 값만 대입할 수 있지만
    객체 리터럴에서는 어떤 타입의 값도 대입을 할 수 있다!
  • 코드 내에서 사용하기 전에 값이 할당되어야 하므로, 런타임 에러를 방지할 수 있다.

enum을 쓰면 좋은 경우

  • enum은 간단한 상수 값을 그룹화해서 관리를 할 때 적합
  • enum은 상수 값이기 때문에 각 멤버의 값이 변하면 안된다는 조건이 있다

객체 리터럴을 쓰면 좋은 경우

  • 객체 리터럴은 멤버의 값이나 데이터 타입을 맘대로 변경할 수 있다.
  • 복잡한 구조와 다양한 데이터 타입을 사용해야 할 때는 객체 리터럴을 사용
profile
배우고 도전하는것을 멈추지 않는 개발자 입니다.
post-custom-banner

0개의 댓글