TypeScript: перечисления

Назад | Учебник TypeScript | Вперёд

Перечисления в TypeScript объявляются с помощью enum:

В примере выше элементы перечисления инициализируются значениями: MAIN_MENU=0, INTRO=1,GAME=2 и т. д. Мы можем изменить нумерацию:

Как видим, значения у всех элементов перечислений идут увеличиваются на единицу относительно предыдущего, если значение не указано явно.

Можно элементам перечисления давать строковые значения:

При желании можно даже чередовать строковые и числовые значения:

Каждый элемент перечисления в TypeScript имеет своё значение, которое может быть константным или вычисляемым. Элемент считается константным, если:

  • Это первый элемент в перечислении и у него нет инициализатора. В этом случае он считается константным и его значение будет равно 0. Пример:
  • У него нет инициализатора и предыдущий элемент в перечислении был числовой константой. В этом случае значением этого элемента будет значение предыдущего элемента, увеличенное на единицу.
  • Элемент перечисления инициализирован константным выражением, то есть выражением TypeScript, которое может быть полностью вычислено на этапе компиляции (в кратце можно сказать так: константное выражение состоит из базовых строковых и числовых литералов и операций над ними).

Во всех остальных случаях элемент перечисления считается вычисляемым.

Элементы перечисления без выражений инициализации должны идти либо первыми в списке элементов перечисления, либо они должны располагаться после элементов перечисления, инициализированных константой или других константных элементов:

Можно получить наименование элемента перечисления из переменной, ссылающейся на элемент перечисления:

Существует const enum:

В отличие от обычных перечислений const enum может использовать только константные элементы и полностью удаляется из runtime-кода. Во все места его использования подставляются реальные значения.

Если мы используем сторонние библиотеки, то иногда необходимо объявлять ambient enum-ы. В этом случае компилятор не будет генерировать код перечисления:

Назад | Учебник TypeScript | Вперёд

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *