Typescript에서 형식과 같은 열거 형을 만드는 방법?
-
12-12-2019 - |
문제
Typescript에 대한 Google지도 API의 정의 파일을 작업하고 있습니다.
과 같은 열거 형을 정의해야합니다.google.maps.Animation
및 BOUNCE
두 개의 속성을 포함하는 DROP
.
Typescript에서 어떻게해야합니까?
해결책
Typescript 0.9+에는 열거 형 사양이 있습니다.
enum AnimationType {
BOUNCE,
DROP,
}
.
마지막 쉼표는 선택 사항입니다.
다른 팁
TypeScript 0.9 (현재 알파 릴리스)의 enum 정의를 사용할 수 있습니다.
enum TShirtSize {
Small,
Medium,
Large
}
var mySize = TShirtSize.Large;
.
기본적으로 이러한 열거 형으로는 각각 0, 1 및 2가 할당됩니다.명시 적으로 이러한 숫자를 설정하려면 Enum 선언의 일부로 수행 할 수 있습니다.
명시 적 회원이있는 6.2 열거 형
enum TShirtSize {
Small = 3,
Medium = 5,
Large = 8
}
var mySize = TShirtSize.Large;
.
이것은 0.8 사양과 다릅니다. 0.8 사양은 이와 같이 보였지만 실험적이고 변경 가능성이 있으므로 이전 코드를 업데이트해야합니다./ P>
Disclaimer -이 0.8 예제는 Typescript 컴파일러의 최신 버전에서 끊어 질 것입니다.
.enum TShirtSize {
Small: 3,
Medium: 5,
Large: 8
}
var mySize = TShirtSize.Large;
이것은 이제 언어의 일부입니다. TypeScriptlang.org> 기본 유형> Enum 이에 대한 설명서에 대한 문서를 참조하십시오.이 열거 형을 사용하는 방법에 대한 문서에서 발췌 한 것 :
enum Color {Red, Green, Blue};
var c: Color = Color.Green;
.
또는 수동 백업 번호 :
enum Color {Red = 1, Green = 2, Blue = 4};
var c: Color = Color.Green;
.
Color[2]
와 같이 사용하여 Enum 이름으로 돌아갈 수도 있습니다.
이 모든 것이 어떻게 함께하는지에 대한 예입니다.
module myModule {
export enum Color {Red, Green, Blue};
export class MyClass {
myColor: Color;
constructor() {
console.log(this.myColor);
this.myColor = Color.Blue;
console.log(this.myColor);
console.log(Color[this.myColor]);
}
}
}
var foo = new myModule.MyClass();
.
이렇게하면 로그 :
.undefined 2 Blue
이 작업을 기록 할 때 Typescript 놀이터 가이 코드를 생성합니다.
.var myModule; (function (myModule) { (function (Color) { Color[Color["Red"] = 0] = "Red"; Color[Color["Green"] = 1] = "Green"; Color[Color["Blue"] = 2] = "Blue"; })(myModule.Color || (myModule.Color = {})); var Color = myModule.Color; ; var MyClass = (function () { function MyClass() { console.log(this.myColor); this.myColor = Color.Blue; console.log(this.myColor); console.log(Color[this.myColor]); } return MyClass; })(); myModule.MyClass = MyClass; })(myModule || (myModule = {})); var foo = new myModule.MyClass();
다음과 같은 ID / String enum을 사용할 수 있습니다.
class EnumyObjects{
public static BOUNCE={str:"Bounce",id:1};
public static DROP={str:"Drop",id:2};
public static FALL={str:"Fall",id:3};
}
. 업데이트 :
@ ix3, typescript 2.4 는 열거 형 문자열을 지원합니다.
참조 : 문자열 값이있는 열거 형을 만듭니다. TypeScript
원래 답변 :
String 멤버 값의 경우 Typescript는 숫자 만 열거 형 멤버 값으로 만 허용합니다. 그러나 구현할 수있는 몇 가지 솔루션 / 해킹이 있습니다.
솔루션 1 :
에서 복사 : https : //blog.rsuter.com/how-to-implement-an-en-with-string-values-in-typescript/
간단한 솔루션이 있습니다. 할당하기 전에 문자열 리터럴을 어디로 던지십시오 :
.
export enum Language {
English = <any>"English",
German = <any>"German",
French = <any>"French",
Italian = <any>"Italian"
}
솔루션 2 :
enums :
enums가 TypeScript 언어에 넣어 명명 된 상수 집합을 정의합니다. enums를 사용하면 우리의 삶을 더 쉽게 할 수 있습니다. 그 이유는 이러한 상수가 enum이 나타내는 값보다 읽는 것이 더 쉽다는 것입니다.
열거 형 만들기 :
enum Direction {
Up = 1,
Down,
Left,
Right,
}
.
enum Direction {
Up = 1,
Down,
Left,
Right,
}
TypeScript 문서 의이 예제에서는 열정적 인 방법을 매우 멋지게 설명합니다. 첫 번째 열거 형 값 (UP)은 1로 초기화됩니다. 숫자 enum의 모든 다음 구성원은이 값에서 자동 증분 (즉, down= 2, left= 3, rike= 4) ...에 첫 번째 값을 1로 초기화하지 않은 경우 열거 형은 0에서 시작한 다음 자동 증가 (즉, down= 1, left= 2, 오른쪽= 3)를 시작합니다.
enum 사용 :
다음과 같은 방식으로 enum 값에 액세스 할 수 있습니다.
Direction.Up; // first the enum name, then the dot operator followed by the enum value
Direction.Down;
.
우리는 코드를 작성하는 방식으로 우리는 훨씬 더 설명 을 더 많이 알고 있습니다. enums는 기본적으로 magic numbers 을 사용하는 것을 방지합니다. (프로그래머가 특정 컨텍스트에서 의미를 주어 졌기 때문에 일부 엔티티를 나타내는 숫자). 마법의 숫자는 다음과 같은 이유 때문에 나쁘다 :
- 우리는 더 열심히 생각해야합니다, 우리는 우리 코드에 대해 원할 수 있기 전에 우리는 먼저 실체로 번호를 번역해야합니다.
- 오랫동안 코드를 검토하거나 다른 프로그래머가 코드를 검토하면 코드를 검토하면이 숫자로 무엇을 의미하는지 알 수 없습니다.
Direction.Up; // first the enum name, then the dot operator followed by the enum value
Direction.Down;