티스토리 뷰

▶타입스크립트 이넘(Enums)

이넘은 특정 값들의 집합을 의미하는 "자료형"입니다.

🔎 이넘(Enums) ? - 사용될 수 있는 값을 묶어두자!

이넘은 특정한 값들을 집합으로 가지고 있는 자료형입니다.

예를 들면 아래와 같은 목록이 이넘이 될 수 있습니다.

enum Shoes {
  Nike,
  Adidas,
}

 

🔎 이넘 사용하기

이넘으로 정의하게 되면 딱 그 값들만 사용할 수 있게 되는데요.

위에서 정의한 Shoes라는 이넘을 사용해 봅시다.

안에 넣은 값들만 사용할 수 있도록 제공

 

🔎 숫자형 이넘

만약에 다음과 같이 작성했다고 해봅시다.

var myShose = Shoes.Nike;
console.log(myShose); // 0

그러면 내가 Nike에 값을 할당하지도 않았는데 콘솔로 찍어보게 되면 0이 출력되게 됩니다.

 

초기값을 할당해주지 않으면 알아서 위에서부터 아래로 차례대로 0부터 1, 2, 3, ... 할당되게 됩니다.

0번째 Nike = 0
1번째 Adidas = 1

그런데 중간에 값을 할당해 주고 그 다음은 또 할당해 주지 않으면 그 값 다음 숫자로 할당을 알아서 또 해줍니다.

enum Shoes {
  // 별도의 값을 지정하지 않으면 전부다 숫자형 타입을 취급
  Nike, // 0
  Adidas, // 1
  NewBalance, // 2
  Puma = 10,
  fila, // 11
}

 

🔎 숫자형 이넘 사용하기

다음처럼 이넘을 하나 선언해서 사용해보겠습니다.

enum ThisResponse {
  No = 0,
  Yes = 1,
}

function response(recipient: string, message: ThisResponse): void {
  // ...
}

response('Doeunn Blog', ThisResponse.Yes);
response('Doeunn Blog', 'Yes'); // Error

코드의 마지막 두 줄을 유심있게 봐야 하는데요.

이넘을 선언하고 파라미터에게 이넘이 적용 되었다면, 그 자리는 반드시 이넘을 통해서만 인자를 넘겨주어야 합니다.

바로 ThisResponse.Yes는 되고 'Yes'는 에러가 발생하는 이유이기도 합니다.

 

숫자형 이넘에서 주의할 점

만약 이넘 값에 다른 이넘 타입의 값을 사용하면 선언하는 이넘의 첫 번째 값에 초기화를 해줘야 한다는 점입니다.

enum Wrong {
  A = getSomeValue(),
  B, // Error, 초기화가 필요합니다.
}

 

🔎 문자형 이넘 - 무조건 모든 값 초기화 필수!

문자형 이넘은 앞에서 살펴본 숫자형 이넘과 개념적으로는 거의 비슷한데요.

 

일단 문자형 이넘은 이넘 값 전부 다 특정 문자 또는 다른 이넘 값으로 초기화 해줘야 합니다.

enum Direction {
    Up = "UP",
    Down = "DOWN",
    Left = "LEFT",
    Right = "RIGHT",
}

또한, 문자형 이넘에는 숫자형 이넘과는 다르게 auto-incrementing이 없습니다.

대신 디버깅을 할 때 숫자형 이넘의 값은 가끔 불명확하게 나올 때가 있지만

문자형 이넘은 항상 명확한 값이 나와 읽기 편합니다.

 

🔎 복합 이넘(Heterogeneous Enums) - 최대한 지양하자

기술적으로 이넘에 문자와 숫자를 혼합하여 생성할 수는 있습니다.

enum BooleanLikeHeterogeneousEnum {
    No = 0,
    Yes = "YES",
}

하지만, 이 방식을 권고하고 있지는 않습니다.

최대한 같은 타입으로 이루어진 이넘을 사용하는 게 좋습니다.

 

 

728x90
LIST
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함