Как назначить Enum переменной? - PullRequest
0 голосов
/ 11 октября 2018

Заголовок говорит сам за себя: как назначить 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'.

Ссылка здесь .

Чтобы кто-то задумался, почемуЯ хотел бы сделать это: я хочу перебрать значения Enum в моем шаблоне 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>

РЕДАКТИРОВАТЬ

Я знаю, что я мог бы назначить каждое отдельное значение, как:

constructor() {
  this.myEnum = {};
  this.myEnum.TOP = MyEnum.TOP;
  this.myEnum.RIGHT= MyEnum.RIGHT;
  this.myEnum.BOTTOM= MyEnum.BOTTOM;
  this.myEnum.LEFT= MyEnum.LEFT;
}

Но это не то, что я хочу.Не удобно, очень подвержено ошибкам.

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете использовать typeof MyEnum для ссылки на тип всего пространства имен перечисления, а не на тип члена перечисления:

export class MyClass {
  public myEnum: typeof MyEnum;

  constructor() {
    this.myEnum = MyEnum;
  }
}

Но может быть проще использовать инициализатор свойства, поэтому TypeScriptвыводит тип, и вам вообще не нужно использовать аннотацию типа:

export class MyClass {
  public myEnum = MyEnum;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...