В TypeScript строковые перечисления (String Enums) позволяют задавать понятные строковые значения для набора констант. В отличие от числовых перечислений, строковые enum не имеют автоинкремента, поэтому каждый член должен быть инициализирован явно.
Основное преимущество строковых Enums — читаемость при отладке и сериализации. Если вы выведете значение в консоль или сохраните в базу данных, вы увидите понятную строку (например, "UP"), а не абстрактное число.
Синтаксис выглядит так:
enum Direction {
Up = "UP",
Down = "DOWN"
}
Этот тренажер TypeScript поможет вам освоить синтаксис объявления, правила инициализации и особенности использования строковых перечислений в реальных задачах. Вы научитесь отличать их от числовых аналогов и правильно применять в коде.
- Модуль 1: Введение в TypeScript
- Модуль 2: Примитивные типы
- Модуль 3: Специальные типы
- Модуль 4: Массивы
- Модуль 5: Кортежи (Tuples)
- Модуль 6: Объекты
- Модуль 7: Функции
- Модуль 8: Union типы
- Модуль 9: Литеральные типы
- Модуль 10: Type Aliases
- Модуль 11: Интерфейсы
- Модуль 12: Type Guards и Narrowing
- Модуль 13: Enums
- Числовые Enums.
- Строковые Enums.
- Гетерогенные Enums.
- const Enums.
- Enum как тип.
- Модуль 14: Классы
- Модуль 15: Generics — основы
- Модуль 16: Generics — ограничения
- Модуль 17: Utility Types — базовые
- Модуль 18: Utility Types — работа с Union
- Модуль 19: Utility Types — функции
- Модуль 20: Type Assertions
- Модуль 21: Keyof и Typeof операторы
- Модуль 22: Mapped Types
- Модуль 23: Conditional Types
- Модуль 24: Discriminated Unions
- Модуль 25: Модули и типы
- Модуль 26: Declaration Files
- Модуль 27: Типизация асинхронного кода
- Модуль 28: Практические паттерны
1. Объявление строкового Enum
В этом задании вам предстоит дополнить объявление строкового перечисления (enum) в TypeScript. Код объявляет перечисление `Role` с двумя ключами: ADMIN и USER. Необходимо инициализировать каждый ключ строковым значением, чтобы получить корректный строковый enum. Обратите внимание на комментарий в коде, который указывает требуемые значения. Заполните пропуски соответствующими строковыми литералами, соблюдая синтаксис TypeScript.
enum Role {
ADMIN = input1S,
USER = input2S
}
// Используйте значения "admin" и "user"2. Присвоение значения
В этом задании вам предстоит дополнить код, который использует строковый enum Direction. Вам нужно выбрать правильные способы передачи аргумента в функцию getDirectionMessage из выпадающего списка. Обратите внимание на разницу между использованием имени enum и строкового литерала, а также на необходимость приведения типа в некоторых случаях.
enum Direction {
North = "North",
South = "South",
East = "East",
West = "West"
}
function getDirectionMessage(dir: Direction): string {
return `You are heading ${dir}`;
}
console.log(getDirectionMessage(input1S));
console.log(getDirectionMessage(input2S));3. Значение в Runtime
Проанализируйте приведённый код на TypeScript, содержащий объявление строкового enum и вывод одного из его значений в консоль. Выберите, что именно будет выведено в консоль: имя ключа, строковое значение или индекс.
enum MyEnum {
A = "Apple",
B = "Banana"
}
console.log(MyEnum.A);4. Ошибка инициализации
В приведённом фрагменте кода TypeScript объявлено строковое перечисление (enum). Однако в нём допущена ошибка: один из элементов перечисления не имеет инициализатора, хотя предыдущий элемент был инициализирован строкой. В строковых перечислениях это запрещено. Найдите строку с ошибкой и исправьте её, добавив подходящее строковое значение.
enum Direction { Up = "UP", Down, // Ошибка здесь Left = "LEFT", Right = "RIGHT"}console.log(Direction.Up);5. String Enum vs Numeric Enum
В левой колонке перечислены характеристики перечислений (enum) в TypeScript. В правой колонке приведены типы перечислений: строковые (String Enum) и числовые (Numeric Enum). Сопоставьте каждую характеристику с соответствующим типом перечисления. Обратите внимание, что каждая характеристика относится только к одному типу, и в правой колонке варианты могут повторяться, но их id уникальны.
6. Выбор корректных обращений
Внимательно изучите приведённый ниже фрагмент кода на TypeScript, содержащий строковое перечисление (enum) и несколько попыток обращения к его членам. Ваша задача — кликнуть и выделить только те обращения, которые являются корректными (синтаксически верными и ссылаются на существующие ключи перечисления). Не отмечайте обращения к несуществующим ключам, синтаксически некорректные выражения или другие элементы кода.
enum Status {
Active = "ACTIVE",
Inactive = "INACTIVE",
Pending = "PENDING"
}
let currentStatus: Status;
// Примеры обращений:
currentStatus = {{Status.Active~|~t1}}; // 1
currentStatus = {{Status["Active"]~|~t2}}; // 2
currentStatus = {{Status.Inactive~|~t3}}; // 3
currentStatus = {{Status.Pending~|~t4}}; // 4
currentStatus = {{Status.ACTIVE~|~t5}}; // 5
currentStatus = {{Status["PENDING"]~|~t6}}; // 6
currentStatus = {{Status.Unknown~|~t7}}; // 7
console.log({{Status~|~t8}}); // 8