본문 바로가기

프로그래밍/javascript

[typescript] enum은 이상한 num이다.

21.08.25

오늘 업무중에 typescript enum의 이상한? 점을 발견했다.

enum GENDER {
MAN = 1,
WOMAN = 2,
KIDS = 3
}

enum DRINKS {
SOJU = '소주'
BEER = '맥주'
}

위의 코드를 보자, GENDER.MAN = 1인것은 자명하다. 그런데 GENDER[1] = MAN 이것은 성립이 될까?

결론부터 말하면 YES이다. 그래서 나는 ENUM을 이상한 넘이라고 표현했다. 더 이상한 것은 DRINKS['소주'] = SOJU는 아니라는 것 이다. 왜 이런 현상이 발생하는지 알아보기 위해서 공식 문서를 살펴 보도록 하겠다.

https://www.typescriptlang.org/ko/docs/handbook/enums.html

 

Handbook - Enums

How TypeScript enums work

www.typescriptlang.org

내가 잘못 읽었나..? 문자 열거형과  숫자 열거형의 차이에 관해서 아무리 읽어봐도 내가 쓴 이상한 점에 대한 설명이 없다.. 혹시 못 찾은 걸수도? 다시 봐도 없다...ㅠㅠ

 

내가 찾은 이상한 점과 이상한 이유까지 정리하고 싶었으나.. 이유를 찾지 못했다.

문자 열거형은 상수만 할당할 수 있다는 특성이 있고, 숫자 열거형은 계산된 값을 할당할 수 있다는 차이점 때문인가..? => 이건 아닌듯. 문자 열거형엔 상수만 할당 할 수 있기에 오히려 더 가능해야 하는거 아닌가?

 

MAY BE 숫자 열거형은 내부적으로 배열에 할당 되는듯..? 잘 모르겠다.. 나중에 시간이 나면 다시 알아봐야겠다