angularjs - ¿Cómo asignar un Enum a una variable?
El título lo dice todo: ¿cómo asigno un Enum a una variable local como:
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'.
Enlace aquí.
Para que alguien se pregunte por qué haría eso: quiero iterar sobre los valores del Enum en mi plantilla de AngularJs:
// 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>
EDITAR
Sé que podría asignar cada valor individual como:
constructor() {
this.myEnum = {};
this.myEnum.TOP = MyEnum.TOP;
this.myEnum.RIGHT= MyEnum.RIGHT;
this.myEnum.BOTTOM= MyEnum.BOTTOM;
this.myEnum.LEFT= MyEnum.LEFT;
}
Pero esto no es lo que quiero. No es práctico, muy propenso a errores.
Respuesta #1
Puedes usar typeof MyEnum para referirte al tipo de todo el espacio de nombres del enum en lugar del tipo de un miembro del enum:
export class MyClass {
public myEnum: typeof MyEnum;
constructor() {
this.myEnum = MyEnum;
}
}
Pero podría ser más fácil usar un inicializador de propiedad para que TypeScript infiera el tipo y no tengas que usar una anotación de tipo en absoluto:
export class MyClass {
public myEnum = MyEnum;
}
