首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在TypeScript中创建类似枚举的类型?

如何在TypeScript中创建类似枚举的类型?
EN

Stack Overflow用户
提问于 2012-10-02 17:29:48
回答 7查看 142.4K关注 0票数 145

我正在为TypeScript的Google maps编写一个定义文件。

我需要定义一个类似枚举的类型,例如。google.maps.Animation,它包含两个属性:BOUNCEDROP

在TypeScript中应该如何做呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-10-02 17:45:08

TypeScript 0.9+有一个枚举规范:

代码语言:javascript
复制
enum AnimationType {
    BOUNCE,
    DROP,
}

最后一个逗号是可选的。

票数 160
EN

Stack Overflow用户

发布于 2012-10-02 17:40:54

从TypeScript 0.9 (当前是一个alpha版本)开始,您可以像这样使用枚举定义:

代码语言:javascript
复制
enum TShirtSize {
  Small,
  Medium,
  Large
}

var mySize = TShirtSize.Large;

默认情况下,这些枚举将分别分配0、1和2。如果要显式设置这些数字,可以将其作为枚举声明的一部分进行设置。

清单6.2具有显式成员的枚举

代码语言:javascript
复制
enum TShirtSize {
  Small = 3,
  Medium = 5,
  Large = 8
}

var mySize = TShirtSize.Large;

这两个例子都是直接从TypeScript for JavaScript Programmers中提出来的。

请注意,这与0.8规范不同。 0.8规范看起来是这样的-但它被标记为实验性的,并且可能会更改,因此您必须更新所有旧代码:

免责声明-此0.8示例在较新版本的TypeScript编译器中会被破坏。

代码语言:javascript
复制
enum TShirtSize {
  Small: 3,
  Medium: 5,
  Large: 8
}

var mySize = TShirtSize.Large;
票数 69
EN

Stack Overflow用户

发布于 2015-08-17 21:23:03

这现在是语言的一部分。有关这方面的文档,请参阅TypeScriptLang.org > Basic Types > enum。以下是有关如何使用这些枚举的文档摘录:

代码语言:javascript
复制
enum Color {Red, Green, Blue};
var c: Color = Color.Green;

或使用手动备份编号:

代码语言:javascript
复制
enum Color {Red = 1, Green = 2, Blue = 4};
var c: Color = Color.Green;

您还可以通过使用例如Color[2]返回到枚举名称。

这里有一个例子,说明了这一切是如何结合在一起的:

代码语言:javascript
复制
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将生成以下代码:

代码语言:javascript
复制
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();
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12687793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档