enum을 사용하면 명명된 상수 집합을 정의할 수 있습니다.
|
|
enum의 바디는 0개 이상의 enum 멤버로 구성됩니다. enum 멤버는 관련 숫자 값을 가지며 상수이거나 계산 될 수 있습니다. enum 멤버는 다음과 같은 경우 상수로 간주됩니다.
- 초기 설정 값이 없고 앞의 enum 멤버가 상수입니다. 이 경우 현재 enum 멤버의 값은 이전 enum 멤버의 값에 1을 더한 값이됩니다. 이 규칙의 한 가지 예외는 열거 형의 첫 번째 멤버입니다. 초기 설정값이 없으면 값 0이 지정됩니다.
- enum 멤버는 상수 enum 식으로 초기화됩니다. 상수 enum 식은 컴파일 타임에 완전히 평가할 수있는 TypeScript 식의 하위 집합입니다. 표현식은 다음 중 하나 인 경우 상수 enum 식입니다.
- 숫자 리터럴
- 이전에 정의된 상수 enum 형 멤버 (다른 enum 형에서 정의 할 수 있음)에 대한 참조. member가 동일한 enum 형에 정의 된 경우 enum 명칭이 없는 이름을 사용하여 참조 할 수 있습니다.
- 괄호로 묶인 상수 enum 표현식
- 단항 연산자 +, -, ~ 가 적용된 상수 enum 표현식
- 상수 enum식이 피연산자로 사용되는 이진 연산자 constant enum식. 상수 enum 식이 NaN 또는 Infinity로 평가되면 컴파일 타임 오류가 발생합니다.
다른 모든 경우에 enum 멤버는 계산 된 것으로 간주됩니다.
|
|
enum은 런타임에 존재하는 실제 객체입니다. 한 가지 근거는 enum 값에서 enum 이름으로 역 매핑을 유지하는 기능입니다.
|
|
은
|
|
으로 컴파일 됩니다.
생성 된 코드에서 enum은 forward (name -> value) 매핑과 reverse (value -> name) 매핑을 모두 저장하는 객체로 컴파일됩니다. enum 멤버에 대한 참조는 항상 속성 액세스로 내보내지며 결코 인라인되지 않습니다. 많은 경우에 이것은 완벽하게 유효한 해결책입니다. 그러나 때로는 요구 사항이 더 엄격합니다. enum 값에 액세스 할 때 여분의 생성 된 코드 및 추가 indirection의 비용을 지불하지 않으려면 const 열거 형을 사용할 수 있습니다. const 열거 형은 enum 키워드 앞에 오는 const 한정자를 사용하여 정의됩니다.
|
|
const enum은 상수 enum 표현식만 사용할 수 있으며 일반 enum과 달리 컴파일하는 동안 완전히 제거됩니다. const enum 멤버는 인라인됩니다. 이것은 const enum가 계산 된 멤버를 가질 수 없기 때문에 가능합니다.
|
|
는
|
|
로 컴파일 됩니다.