0Pricing
TypeScript Academy · Урок

Перечисления: числовые и строковые константы

Используйте перечисления вместо магических строк и чисел

«Перечисления: числовые и строковые константы» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Добро пожаловать

Перечисления позволяют определить набор именованных константных значений. Они заменяют магические числа и строки понятными именами, соблюдение которых обеспечивает TypeScript.

Числовые перечисления

По умолчанию членам перечисления назначаются автоматически увеличивающиеся числа, начиная с 0.
enum Direction {
  Up,    // 0
  Down,  // 1
  Left,  // 2
  Right, // 3
}
console.log(Direction.Up); // 0

Пользовательские значения числовых перечислений

Можно задать начальное значение или переопределить отдельные члены. Последующие члены автоматически получают значения, увеличивающиеся от последнего заданного значения.
enum Status {
  Active = 1,
  Inactive, // 2
  Banned = 100,
}

Строковые перечисления

Для каждого члена строкового перечисления требуется явно указать значение. В журналах и сериализованных данных они понятнее чисел.
enum Color {
  Red = 'RED',
  Green = 'GREEN',
  Blue = 'BLUE',
}

Использование перечислений в функциях

Используйте тип перечисления в качестве типа параметра, чтобы ограничить значения заданным набором.
function move(dir: Direction): void {
  console.log('Moving:', Direction[dir]);
}
move(Direction.Up);

Обратное отображение (только для числовых перечислений)

Числовые перечисления поддерживают обратное отображение: по значению можно получить имя члена. Строковые перечисления этого не поддерживают.
enum Status { Active = 1, Inactive = 2 }
console.log(Status[1]); // 'Active'
console.log(Status.Active); // 1

Константные перечисления

`const enum` встраивается во время компиляции — объект JavaScript не создаётся. Это уменьшает размер пакета, но ограничивает анализ во время выполнения.
const enum Axis { X, Y, Z }
const a = Axis.X; // compiled to: const a = 0;

Перечисления и объединения литеральных типов

Многие разработчики TypeScript предпочитают объединения литеральных типов перечислениям. Они легче и работают без кода во время выполнения.
// Enum
enum Dir { Up = 'UP', Down = 'DOWN' }

// Union literal (preferred by many)
type Dir2 = 'UP' | 'DOWN';

Гетерогенные перечисления (избегайте их)

Смешивать строковые и числовые значения в одном перечислении разрешено, но это сбивает с толку. Избегайте такого подхода.
// Avoid:
enum Mixed { A = 1, B = 'bee' }

Перечисления являются настоящими объектами во время выполнения

В отличие от интерфейсов и псевдонимов типов, перечисления порождают код JavaScript. Скомпилированный результат представляет собой объект JavaScript с отображениями от имени к значению и от значения к имени (для числовых перечислений).

Перебор значений перечисления

Используйте Object.values() или Object.keys() для объекта перечисления, чтобы перебирать его члены во время выполнения.
enum Role { Admin = 'ADMIN', User = 'USER', Guest = 'GUEST' }
const roles = Object.values(Role);
console.log(roles); // ['ADMIN', 'USER', 'GUEST']

Быстрая проверка

Какой тип перечисления поддерживает обратное отображение (получение имени по значению)?

Итоги

Перечисления задают именованные наборы констант как настоящие объекты JavaScript. Используйте строковые перечисления для большей понятности, константные перечисления — для производительности, а в качестве более лёгкой альтернативы рассмотрите объединения литеральных типов.

Часто задаваемые вопросы

Урок «Перечисления: числовые и строковые константы» бесплатный?

Да — полный текст урока «Перечисления: числовые и строковые константы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Перечисления: числовые и строковые константы»?

Используйте перечисления вместо магических строк и чисел Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Перечисления: числовые и строковые константы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Типизированные массивы: T[] и Array
  2. Readonly-массивы и неизменяемые данные
  3. Кортежи: типизированные массивы фиксированной длины
  4. Перечисления: числовые и строковые константы
← Назад к TypeScript Academy