我正在为TypeScript的Google maps编写一个定义文件。
我需要定义一个类似枚举的类型,例如。google.maps.Animation,它包含两个属性:BOUNCE和DROP。
在TypeScript中应该如何做呢?
发布于 2012-10-02 17:45:08
TypeScript 0.9+有一个枚举规范:
enum AnimationType {
BOUNCE,
DROP,
}最后一个逗号是可选的。
发布于 2012-10-02 17:40:54
从TypeScript 0.9 (当前是一个alpha版本)开始,您可以像这样使用枚举定义:
enum TShirtSize {
Small,
Medium,
Large
}
var mySize = TShirtSize.Large;默认情况下,这些枚举将分别分配0、1和2。如果要显式设置这些数字,可以将其作为枚举声明的一部分进行设置。
清单6.2具有显式成员的枚举
enum TShirtSize {
Small = 3,
Medium = 5,
Large = 8
}
var mySize = TShirtSize.Large;这两个例子都是直接从TypeScript for JavaScript Programmers中提出来的。
请注意,这与0.8规范不同。 0.8规范看起来是这样的-但它被标记为实验性的,并且可能会更改,因此您必须更新所有旧代码:
免责声明-此0.8示例在较新版本的TypeScript编译器中会被破坏。
enum TShirtSize {
Small: 3,
Medium: 5,
Large: 8
}
var mySize = TShirtSize.Large;发布于 2015-08-17 21:23:03
这现在是语言的一部分。有关这方面的文档,请参阅TypeScriptLang.org > Basic Types > 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]返回到枚举名称。
这里有一个例子,说明了这一切是如何结合在一起的:
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();这将记录以下内容:
未定义2蓝色
因为,在编写本文时,Typescript Playground将生成以下代码:
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();https://stackoverflow.com/questions/12687793
复制相似问题