문제

Typescript에 대한 Google지도 API의 정의 파일을 작업하고 있습니다.

과 같은 열거 형을 정의해야합니다.google.maps.AnimationBOUNCE 두 개의 속성을 포함하는 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 :

에서 복사 :

문자열 리터럴을 유형으로 사용할 수 있습니다. 예 :

let foo: 'Hello';
.

여기서 우리는 리터럴 가치 'hello'만 할당 할 수있는 Foo라는 변수를 만들었습니다. 이것은 아래에 시연됩니다 :

let foo: 'Hello';
foo = 'Bar'; // Error: "Bar" is not assignable to type "Hello"
.

그들은 자체적으로 매우 유용하지 않지만 강력한 (및 유용한) 추상화를 생성하기 위해 유형 노조에서 결합 될 수 있습니다. :

type CardinalDirection =
    "North"
    | "East"
    | "South"
    | "West";

function move(distance: number, direction: CardinalDirection) {
    // ...
}

move(1,"North"); // Okay
move(1,"Nurth"); // Error!
.

Typescript의

enums :

enums가 TypeScript 언어에 넣어 명명 된 상수 집합을 정의합니다. enums를 사용하면 우리의 삶을 더 쉽게 할 수 있습니다. 그 이유는 이러한 상수가 enum이 나타내는 값보다 읽는 것이 더 쉽다는 것입니다.

열거 형 만들기 :
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 을 사용하는 것을 방지합니다. (프로그래머가 특정 컨텍스트에서 의미를 주어 졌기 때문에 일부 엔티티를 나타내는 숫자). 마법의 숫자는 다음과 같은 이유 때문에 나쁘다 :

  1. 우리는 더 열심히 생각해야합니다, 우리는 우리 코드에 대해 원할 수 있기 전에 우리는 먼저 실체로 번호를 번역해야합니다.
  2. 오랫동안 코드를 검토하거나 다른 프로그래머가 코드를 검토하면 코드를 검토하면이 숫자로 무엇을 의미하는지 알 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top