angularjs - 如何将枚举分配给变量?
问题描述
标题说明了一切:如何将 Enum 分配给局部变量,例如:
export enum MyEnum {
TOP = "top",
RIGHT = "right",
BOTTOM = "bottom",
LEFT = "left"
};
const myEnum: MyEnum = MyEnum; // <-Error: Type 'typeof MyEnum' is not assignable to type 'MyEnum'.
链接在这里。
为了有人想知道我为什么要这样做:我想遍历 AngularJs 模板中的 Enum 值:
// component controller
export class MyClass {
public myEnum: MyEnum;
constructor() {
this.myEnum = MyEnum;
}
}
// component template
<ul>
<li ng-repeat="enum in $ctrl.myEnum">{{ enum }}</li>
</ul>
编辑
我知道我可以分配每个值,例如:
constructor() {
this.myEnum = {};
this.myEnum.TOP = MyEnum.TOP;
this.myEnum.RIGHT= MyEnum.RIGHT;
this.myEnum.BOTTOM= MyEnum.BOTTOM;
this.myEnum.LEFT= MyEnum.LEFT;
}
但这不是我想要的。不方便,很容易出错。
解决方案
您可以使用typeof MyEnum
来引用整个枚举命名空间的类型,而不是枚举成员的类型:
export class MyClass {
public myEnum: typeof MyEnum;
constructor() {
this.myEnum = MyEnum;
}
}
但是使用属性初始化器可能更容易,因此 TypeScript 将推断类型,您根本不必使用类型注释:
export class MyClass {
public myEnum = MyEnum;
}
推荐阅读
- python-3.x - 如何在 python 3 进程中定义超时?
- c# - 在给定索引处将行添加到 TableLayoutPanel
- php - 在 php 数组中格式化来自服务器的响应
- mysql - 无法解释是什么让我的查询如此缓慢
- php - 第 5 行第 1 列的错误:文档末尾的额外内容
- git - 是否可以以编程方式从 master 中删除一个过去的修订?
- reactjs - 未处理的拒绝(TypeError):无法读取未定义的属性“setState”
- python - 如何从 pyNaCl 中的值加载 SigningKey?
- winapi - 使用 Common Controls 6.0 时无法更改编辑文本背景
- angular - 构建角度代码时出错