studye / typescript

타입스크립트는 자바스크립트랑 다른 언어인가요?
7 stars 0 forks source link

[Chapter2] Enums #3

Open sculove opened 7 years ago

sculove commented 7 years ago

enum

C#, C++, Java에 있는 그 enum 맞습니다. 기본값은 0 부터 시작합니다.

enum StudyType {
  스스로,
  강제,
  지시,
  마지못해
};
console.log(StudyType.스스로); // 0
console.log(StudyType.강제); // 1
enum Workday {
  월 = 18,
  화 = 1842,
  수 = 180,
  목 = 999
  금 = 0
};
console.log(Workday.월); // 18
console.log(Workday.화); // 1842

특이하게 enum은 양방향으로 처리가 가능함.

console.log(StudyType.강제); // 1
console.log(StudyType[1]); // 강제
console.log(Workday.월); // 18
console.log(Workday[18]); // 월

변환된 코드

var StudyType;
(function (StudyType) {
    StudyType[StudyType["스스로"] = 0] = "스스로";
    StudyType[StudyType["강제"] = 1] = "강제";
    StudyType[StudyType["지시"] = 2] = "지시";
    StudyType[StudyType["마지못해"] = 3] = "마지못해";
})(StudyType || (StudyType = {}));
;

2017-06-18 12 29 17

const enum

const enum은 문자열로만 접근이 가능함. 양방향은 안된다. 참고로, 실제 변환된 코드는 enum과 동일하다.

const enum StudyType {
  스스로,
  강제,
  지시,
  마지못해
};
console.log(StudyType.스스로); // 0
console.log(StudyType[1]); // error. A const enum member can only be accessed using a string literal.