본문 바로가기

js/TypeScript

TypeScript - 이넘(Enums)

이넘(Enums)

이넘은 특정 값들의 집합을 의미하는 자료형입니다. 예를 들면 아래와 같은 목록이 이넘이 될 수 있습니다.

 

숫자형 이넘

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

enum Book {
    해리포터 = 1, 
    반지의제왕,
    삼국지
}

위와 같이 숫자형 이넘을 선언할 때 초기 값을 주면 초기 값부터 차례로 1씩 증가합니다.

 

    해리포터 - 1
    반지의제왕 -2
    삼국지 -3

만약 아래와 같이 초기 값을 주지 않으면 0부터 차례로 1씩 증가합니다.

enum Book {
    해리포터 , //0
    반지의제왕,//1
    삼국지//2
}

숫자형 이넘 사용하기

이렇게 선언한 이넘은 아래와 같이 사용할 수 있습니다.

enum Book {
    해리포터 , //0
    반지의제왕,//1
    삼국지//2
}

function bookchecking(bookname:string , booknumber:Book):void{
    console.log(bookname);
    console.log(booknumber);
}
bookchecking('해리포터',Book.해리포터);

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

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

문자형 이넘

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

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

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

또한, 문자형 이넘에는 숫자형 이넘과는 다르게 auto-incrementing이 없습니다. 대신 디버깅을 할 때 숫자형 이넘의 값은 가끔 불명확하게 나올 떄가 있지만 문자형 이넘은 항상 명확한 값이 나와 읽기 편합니다.

'js > TypeScript' 카테고리의 다른 글

TypeScript - Generics  (0) 2022.07.27
TypeScript - Class  (0) 2022.07.27
TypeScript - 인터페이스  (0) 2022.07.27
TypeScript - 함수  (0) 2022.07.27
TypeScript - Union Type  (0) 2022.07.27