Использование строковых перечислений
Часть раздела Введение в TypeScript путешествия по JavaScript на Coddy. Урок 54 из 73.
Строковые перечисления работают особенно хорошо в качестве параметров функций, так как они обеспечивают понятные и читаемые значения, сохраняя при этом типобезопасность.
Вот как можно использовать строковый enum в функции:
function move(direction: Direction): void {
console.log(`Moving ${direction.toLowerCase()}...`);
}Когда вы вызываете эту функцию, TypeScript будет принимать только предопределенные значения enum. Вы можете вызвать её, используя move(Direction.Up), что выведет "Moving up...". Ваш редактор кода предложит автодополнение для доступных членов enum, а TypeScript будет отслеживать любые попытки передать недопустимые значения направления.
Задание
ЛегкоВам предоставлены следующие элементы из предыдущего испытания:
- Строковое перечисление (enum)
Directionс элементамиUp,Down,LeftиRight - Переменные:
upDirection,downDirection,leftDirectionиrightDirection
Создайте функцию с именем move, которая принимает один параметр:
directionтипаDirection
Функция должна:
- Выводить сообщение в формате
"Moving [direction]...", где[direction]— это строковое значение перечисления в нижнем регистре - Иметь тип возвращаемого значения
void
Создайте функцию с именем getMovementDescription, которая принимает один параметр:
directionтипаDirection
Функция должна:
- Возвращать строку, описывающую движение в зависимости от направления:
- Для
Direction.Up: вернуть"Going upward" - Для
Direction.Down: вернуть"Going downward" - Для
Direction.Left: вернуть"Turning left" - Для
Direction.Right: вернуть"Turning right" - Иметь явный тип возвращаемого значения
string
Создайте переменную с именем playerDirection типа Direction и присвойте ей значение Direction.Up.
Выведите следующие результаты:
- Вызовите
moveс аргументомDirection.Up - Вызовите
moveс аргументомleftDirection - Вызовите
moveс аргументомplayerDirection - Выведите результат вызова
getMovementDescriptionс аргументомDirection.Down - Выведите результат вызова
getMovementDescriptionс аргументомrightDirection - Вызовите
moveс аргументомDirection.Right
Попробуйте сами
// Из предыдущего задания — перечисление Direction и переменные
enum Direction {
Up = "Up",
Down = "Down",
Left = "Left",
Right = "Right"
}
const upDirection = Direction.Up;
const downDirection = Direction.Down;
const leftDirection = Direction.Left;
const rightDirection = Direction.Right;
// TODO: Напишите свой код здесь
// Создайте функцию move, которая принимает параметр Direction и выводит "Moving [direction]..."
// Создайте функцию getMovementDescription, которая возвращает описания движений
// Создайте переменную playerDirection
// Вызовите функции и выведите требуемые результатыВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в TypeScript
1Начало работы с TS
Что такое TypeScript?Зачем использовать TypeScript?Ваш первый код на TypeScriptПроцесс компиляции и ошибкиИтоги: Введение в TS4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация стрелочных функцийТип возвращаемого значения 'void'Необязательные параметры с '?'Значения параметров по умолчаниюТипизация Rest-параметровОпределение типов функцийИтоги: Создание типизированных функций2Основные типы
Базовые типы: str, num, booleanТип 'any': лазейкаТип 'unknown'Работа с 'null' и 'undef'Вывод типов в действииЯвные аннотации типовИтоги: Практика по основным типам5Типы: псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения ('|')Работа с типами объединенияЛитеральные типыТипы пересечения ('&')Комбинирование псевдонимов типовИтоги: продвинутые комбинации типов8Перечисления (Enums)
Что такое числовое перечисление?Использование числовых перечисленийЧто такое строковое перечисление?Использование строковых перечисленийГетерогенные перечисленияИтоги: использование перечислений3Структуры данных: массивы и кортежи
Типизированные массивыМодификатор 'readonly' для массивовЧто такое кортеж?Объявление кортежей и доступ к нимДеструктуризация кортежейКортежи readonlyМногомерные типизированные массивыОператор spread с массивамиИтоги: массивы и кортежиПотренируйтесь самостоятельно: Онлайн-компилятор JavaScript