Перечисления, const enum и альтернативы на основе объединений литералов
Сравните классические перечисления, const enum и альтернативы на основе объединений литералов; узнайте об их компромиссах по удобству разработки, размеру и безопасности.
«Перечисления, const enum и альтернативы на основе объединений литералов» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 3 уроков всего.
Введение
Цель: понять, когда использовать перечисление, константное перечисление или типы литеральных объединений. Вы сравните результат во время выполнения, удобство разработки и удаление неиспользуемого кода при сборке.
Числовое перечисление
Числовые перечисления создают объект во время выполнения и разрешают обратное сопоставление. Это просто, но немного увеличивает размер пакета.
enum Direction {
Left = 0,
Right = 1
}
const d: Direction = Direction.Left;
console.log(d); // 0Строковое перечисление
Строковые перечисления удобны для чтения в журналах и программных интерфейсах. Они также создают объекты во время выполнения.
enum Status {
Ok = "ok",
Error = "error"
}
const s: Status = Status.Ok;
console.log(s); // "ok"Константное перечисление
Константное перечисление подставляет значения во время компиляции, не создавая затрат во время выполнения, но требует согласованных инструментов сборки.
const enum Axis {
X = 0,
Y = 1
}
const a: Axis = Axis.X;
console.log(a); // 0 (inlined)Альтернатива в виде литерального объединения
Литеральные объединения: не создают результат во время выполнения, отлично сужают типы в switch и позволяют эффективно удалять неиспользуемый код при сборке. Во многих случаях это отличный вариант по умолчанию.
type Dir = "left" | "right";
function move(d: Dir) {
switch (d) {
case "left":
console.log("←");
break;
case "right":
console.log("→");
break;
}
}
move("left");Когда сделать выбор
Рекомендации:
- В большинстве наборов вариантов отдавайте предпочтение литеральным объединениям (затраты во время выполнения отсутствуют).
- Используйте перечисление, если нужен объект во время выполнения или обратное сопоставление.
- Используйте константное перечисление для подставляемых констант, если это поддерживается вашей сборкой.
Проверка литеральных объединений и перечислений
Быстрая проверка: какое утверждение о типах литеральных объединений как альтернативе перечислениям верно?
Итоги
Итоги: перечисление создаёт объекты во время выполнения; константное перечисление подставляет значения без затрат; литеральные объединения обеспечивают безопасность без результата во время выполнения. Выбирайте вариант с учётом сборки и требований программного интерфейса.
Часто задаваемые вопросы
Урок «Перечисления, const enum и альтернативы на основе объединений литералов» бесплатный?
Да — полный текст урока «Перечисления, const enum и альтернативы на основе объединений литералов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Перечисления, const enum и альтернативы на основе объединений литералов»?
Сравните классические перечисления, const enum и альтернативы на основе объединений литералов; узнайте об их компромиссах по удобству разработки, размеру и безопасности. Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.
Сколько времени занимает урок «Перечисления, const enum и альтернативы на основе объединений литералов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Массивы и ReadonlyArray
- Кортежи и именованные кортежи
- Перечисления, const enum и альтернативы на основе объединений литералов