타입스크립트 베이직 - 4: Enum(열거형)

유키미아우·2023년 11월 5일
0
post-custom-banner

Enum타입이란?

Enum의 한국어명은 열거형이며, 자바스크립트에는 없는 타입이다.

어디서 많이 봤다?👀 했더니 객체의 속성 프로퍼티 중 하나인 Enumerable의 약자이네.
해당자료를 for in 반복문에서 나타낼지 숨길지를 Boolean으로 결정해주던 녀석이다.

C와 Java를 다루는 개발자에게는 익숙한 타입인 것 같다.

사용법

이렇게 Size 데이터를 enum으로 준비해준다.

enum Size {
	S,
    M,
    L,
    XL,
}

아래와 같이 활용한다.

let product: {
	id: string;
  	name: string;
  	price: number;
  	sizes: Size[]; // 불러와주고
} = {
	id: "0123";
  	name: "티셔츠";
  	price: 50;
  	sizes: [Size.M], // 닷노테이션으로 객체에서 자료불러오듯 사용.
}

이넘의 기본값은 0부터 시작하는 정수이다!
Size.S, .M, .L, .XL을 차례대로 콘솔해보면

0
1
2
3

이렇게 뜨는 것을 확인할 수 있다.
즉, 맨 위에 작성한 Size 이넘은 value의 할당을 생략하였기 때문에 숫자형 타입의 enum이라고 볼 수 있다.

이렇듯 이넘의 기본값은 0부터 시작하나, 0은 false값으로 처리될 위험이 있다. Size.S는 0처리되므로 if (Size.S) 같은 조건문을 사용하는 경우 엄연한 사이즈 중 하나인데도 falsy로 인식되어 쓰루당할 수 있단 이야기.

따라서 문자형 타입의 이넘을 선택하여 명시적으로 값 할당해주면 예기치 않은 문제를 피할 수 있다.

enum Size {
	S = "S",
    M = "M",
    L = "L",
    XL = "XL",
}

혹은, 초기화시 맨 앞 숫자가 1부터 시작하도록 하여 기본값을 그대로 활용하는 방법도 있다.

enum Size {
	S = 1,
    M,
    L,
    XL,
}

Enum하고 오브젝트의 차이점

객체는 내부 데이터를 자유롭게 변경할수 있지만, enum은 선언후 변경이 불가하다.
객체는 화이트보드와 보드마카, 이넘은 화이트보드와 유성매직인 셈..

객체의 밸류에는 모든 타입이 저장가능하나, enum은 오로지 문자열 혹은 숫자만 저장된다.

profile
능동적인 마음
post-custom-banner

0개의 댓글