Javascript 能否在TypeScript类内部设置静态枚举?
我希望能够以某种方式在我的TypeScript类上静态设置一个枚举,并能够通过导出该类在内部和外部引用它。我对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
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不允许在类内定义枚举。多么糟糕的语言!