Javascript 能否在TypeScript类内部设置静态枚举?

Javascript 能否在TypeScript类内部设置静态枚举?,javascript,class,backbone.js,enums,typescript,Javascript,Class,Backbone.js,Enums,Typescript,我希望能够以某种方式在我的TypeScript类上静态设置一个枚举,并能够通过导出该类在内部和外部引用它。我对TypeScript相当陌生,所以我不确定它的语法是否正确,但下面是一些伪代码(它扩展了主干模型),我希望能够使用它们来实现我所需要的 class UnitModel extends Backbone.Model { static enum UNIT_STATUS { NOT_STARTED, STARTED, COMPLETED

我希望能够以某种方式在我的TypeScript类上静态设置一个枚举,并能够通过导出该类在内部和外部引用它。我对TypeScript相当陌生,所以我不确定它的语法是否正确,但下面是一些伪代码(它扩展了主干模型),我希望能够使用它们来实现我所需要的

class UnitModel extends Backbone.Model {
    static enum UNIT_STATUS {
        NOT_STARTED,
        STARTED,
        COMPLETED
    }

    defaults(): UnitInterface {
        return {
            status: UNIT_STATUS.NOT_STARTED
        };
    }


    isComplete(){
        return this.get("status") === UNIT_STATUS.COMPLETED;
    }

    complete(){
        this.set("status", UNIT_STATUS.COMPLETED);
    }
}

export = UnitModel;
我需要能够引用此类内部的枚举,但也需要能够引用类外部的枚举,如下所示:

import UnitModel = require('path/to/UnitModel');
alert(UnitModel.UNIT_STATUS.NOT_STARTED);//expected to see 0 since enums start at 0

为此,您需要首先在类之外定义它,然后将其指定为静态属性

enum UNIT_STATUS {
    NOT_STARTED,
    STARTED,
    COMPLETED,
}

class UnitModel extends Backbone.Model {

    static UNIT_STATUS = UNIT_STATUS;

    isComplete(){
        return this.get("status") === UNIT_STATUS.COMPLETED;
    }
}

export = UnitModel;

您可以在类之后声明名称空间,并在名称空间内声明枚举。例如:

class UnitModel extends Backbone.Model {
    defaults(): UnitInterface {
        return {
            status: UNIT_STATUS.NOT_STARTED
        };
    }


    isComplete(){
        return this.get("status") === UNIT_STATUS.COMPLETED;
    }

    complete(){
        this.set("status", UNIT_STATUS.COMPLETED);
    }
}

namespace UnitModel {
    export enum UNIT_STATUS {
        NOT_STARTED,
        STARTED,
        COMPLETED
    }
}

export = UnitModel;

然后可以使用
UnitModel.UNIT_stus
引用枚举。

typescript不允许在类内定义枚举。多么糟糕的语言!