타입스크립트 이넘

c_yj·2022년 10월 9일
0

TypeScript

목록 보기
4/7
post-thumbnail

이넘이란?

이넘이란 열거형을 의미합니다.
타입스크립트에는 자바스크립트에는 없는 또다른 타입인 이넘(enum)이 있습니다. 이넘은 특정 값들의 집합을 의미하는 자료형입니다. 타입스크립트에서는 문자형 이넘과 숫자형 이넘을 지원합니다.

추가적으로 Enum을 사용하여 얻을 수 있는 이점들은 다음과 같습니다.

  • 상수를 사용할때보다 IDE의 적극적인 지원을 받을 수 있습니다.
  • 변경범위가 줄어듭니다.

숫자형 이넘

타입스크립트에서 숫자형 이넘은 아래와 같이 선언한다.

enum Direction {
  Up = 1,
  Down,
  Left,
  Right
}

숫자형 이넘을 선언할 때 초기 값을 주면 초기 값부터 차례로 1씩 증가한다

Up = 1
Down = 2
Left = 3
Right= 4

초기 값을 주지 않으면 0부터 차례로 1씩 증가한다

숫자형 이넘은 다음과 같이 사용할 수 있다

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

function respond(recipient: string, message: Response): void {
  // ...
}

respond("Captain Pangyo", Response.Yes);

숫자형 이넘에서 주의할 점은 선언할 때 만약 이넘 값에 다른 이넘 타입의 값을 사용하면 선언하는 이넘의 첫 번째 값에 초기화를 해줘야 한다

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

문자형 이넘

문자형 이넘은 앞에서 살펴본 숫자형 이넘과 개념적으로는 거의 비슷하지만 런타임에서는 미세하게 차이가 있다.

문자형 이념은 이념 값을 전부 특정문자 또는 특정 값으로 초기화 해줘야 한다.

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

객체와의 차이

이넘은 사실 JS의 객체와 너무 유사하게 보이는데 어떤 차이가 있는지 알아보자.

  • object 는 코드내에서 새로운 속성을 자유롭게 추가할 수 있지만, enum 은 선언할때 이후에 변경할 수 없습니다.
  • object 의 속성값은 JS가 허용하는 모든 타입이 올 수 있지만, enum 의 속성값으로는 문자열 혹은 숫자만 허용됩니다.

이넘을 사용하면 코드의 안정성이 증가할 것 같다.

참고
https://sambalim.tistory.com/142
https://joshua1988.github.io/ts/guide/enums.html#%EB%B3%B5%ED%95%A9-%EC%9D%B4%EB%84%98-heterogeneous-enums

profile
FrontEnd Developer

0개의 댓글