Dolgozom egy meghatározások fájlt a Google Maps API-géppel.
És azt kell meghatároznunk enum mint a típus pl. google.maps.Animationamely két tulajdonságok: BOUNCEés DROP.
Hogyan kellene ezt tenni géppel?
Dolgozom egy meghatározások fájlt a Google Maps API-géppel.
És azt kell meghatároznunk enum mint a típus pl. google.maps.Animationamely két tulajdonságok: BOUNCEés DROP.
Hogyan kellene ezt tenni géppel?
Gépelt 0.9+ van egy leírás a enums:
enum AnimationType {
BOUNCE,
DROP,
}
Az utolsó vessző opcionális.
Mivel a gépelt 0,9 (jelenleg egy alfa kiadás), akkor használja a enum definíció, mint ez:
enum TShirtSize {
Small,
Medium,
Large
}
var mySize = TShirtSize.Large;
Alapértelmezésben ezek felsorolások kap 0, 1, illetve 2. Ha azt szeretnénk, hogy kifejezetten meg ezeket a számokat, akkor megteheti részeként enum nyilatkozat.
Listing 6.2 felsorolások az explicit tagjai
enum TShirtSize {
Small = 3,
Medium = 5,
Large = 8
}
var mySize = TShirtSize.Large;
Mindkét példa felemelte a közvetlenül a géppel a JavaScript programozók .
Megjegyzendő, hogy ez különbözik a 0.8 specifikáció. A 0.8 specifikáció így nézett ki -, de meg volt jelölve a kísérleti és valószínűleg változni fog, így lesz frissíteni a régi kód:
Fontos - ez 0,8 példa lenne törve az újabb verziók a géppel fordító.
enum TShirtSize {
Small: 3,
Medium: 5,
Large: 8
}
var mySize = TShirtSize.Large;
Ez már része a nyelvet. Lásd TypeScriptLang.org> alaptípus> enum a dokumentáció ezt. Egy részlet a dokumentációt, hogy hogyan kell használni ezeket enums:
enum Color {Red, Green, Blue};
var c: Color = Color.Green;
Vagy kézi hátlap szám:
enum Color {Red = 1, Green = 2, Blue = 4};
var c: Color = Color.Green;
Akkor is megy vissza az enum név használatával például Color[2].
Íme egy példa arra, hogyan mindez együtt jár:
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();
Ez log:
undefined 2 Blue
Mert abban az időben az írás ezt a géppel Játszótér fog generálni ezt a kódot:
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();
Csak egy megjegyzés, hogy lehet egy id / string enum a következő:
class EnumyObjects{
public static BOUNCE={str:"Bounce",id:1};
public static DROP={str:"Drop",id:2};
public static FALL={str:"Fall",id:3};
}
frissítés :
Amint @ iX3, írógéppel 2.4 már támogatja az enum szálakat.
Lásd: Hozzon létre egy enum string értékeket géppel
Eredeti válasz:
Karakterlánc tag értékek géppel csak akkor teszi lehetővé a számokat enum tagja értékeket. De van néhány megoldás / hack akkor végre;
1. megoldás:
másolt: https://blog.rsuter.com/how-to-implement-an-enum-with-string-values-in-typescript/
Van egy egyszerű megoldás: csak a leadott szövegkonstans bármilyen kiosztása előtt:
export enum Language {
English = <any>"English",
German = <any>"German",
French = <any>"French",
Italian = <any>"Italian"
}
oldat 2:
másolt: https://basarat.gitbooks.io/typescript/content/docs/types/literal-types.html
Használhatja a szövegkonstans mint egy típust. Például:
let foo: 'Hello';
Itt létrehoztunk egy változót nevű ize, hogy csak akkor engedi a szó értéke „Hello” kell hozzárendelni. Ezt bizonyítja az alábbi:
let foo: 'Hello';
foo = 'Bar'; // Error: "Bar" is not assignable to type "Hello"
Ezek nem túl hasznos a saját, de lehet kombinálni típusú unió hozzon létre egy erős (és hasznos) absztrakció pl:
type CardinalDirection =
"North"
| "East"
| "South"
| "West";
function move(distance: number, direction: CardinalDirection) {
// ...
}
move(1,"North"); // Okay
move(1,"Nurth"); // Error!
Enums kerülnek a géppel nyelvet, hogy határozza meg a konstansok. Használata enums teheti életünket könnyebbé. Ennek az az oka, hogy ezek az állandók gyakran könnyebb olvasni, mint az érték, amelyet az enum képvisel.
enum Direction {
Up = 1,
Down,
Left,
Right,
}
Ez a példa a géppel docs elmagyarázza szépen hogyan enums működik. Figyeljük meg, hogy az első enum érték (Fel) inicializálja 1. Minden az alábbi tagjai számának enum ezután auto növekszik ettől értékét (azaz lefelé = 2, Left = 3, Jobb = 4). Ha nem inicializálja az első érték 1 enum indulna 0, majd auto növekmény (azaz lefelé = 1, Bal = 2, Jobb = 3).
Mi lehet hozzáférni értékeit enum a következő módon:
Direction.Up; // first the enum name, then the dot operator followed by the enum value
Direction.Down;
Figyeljük meg, hogy ez a módja már sokkal leíró ahogy írunk a kódot. Enums alapvetően megakadályozzák, hogy a bűvös szám (számok, amelyek képviselik egység, mert a programozó adott értelmet nekik egy bizonyos kontextusban). Mágikus számok rosszak, mert a következő okok miatt: