Литеральные типы (Literal Types) позволяют сузить множество допустимых значений переменной не просто до «числа», а до конкретных чисел. Например, тип let dice: 1 | 2 | 3 | 4 | 5 | 6; разрешает переменной принимать только одно из указанных целых чисел.
Это удобно для описания фиксированных констант, статус-кодов ответов сервера, уровней доступа или настроек анимации. В сочетании с объединением типов (Union Types), числовые литералы создают очень строгую и надежную типизацию. В этих заданиях вы научитесь ограничивать переменные конкретными числовыми значениями.
- Модуль 1: Введение в TypeScript
- Модуль 2: Примитивные типы
- Модуль 3: Специальные типы
- Модуль 4: Массивы
- Модуль 5: Кортежи (Tuples)
- Модуль 6: Объекты
- Модуль 7: Функции
- Модуль 8: Union типы
- Модуль 9: Литеральные типы
- Модуль 10: Type Aliases
- Модуль 11: Интерфейсы
- Модуль 12: Type Guards и Narrowing
- Модуль 13: Enums
- Модуль 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. Объявление литерала
В этом задании вам нужно объявить тип переменной rating, который будет принимать только конкретные числовые значения: 1, 2 или 3. Используйте литеральные типы TypeScript и оператор объединения (|) для создания такого ограниченного типа. Затем присвойте переменной допустимое значение и выведите его в консоль. Заполните пропуски в коде так, чтобы он корректно компилировался и выполнялся.
let rating: input1S;
rating = input2S;
console.log(rating);2. Валидные значения
Перед вами список числовых литералов. Разнесите их по двум категориям: 'Подходит' и 'Ошибка компиляции'. Категория 'Подходит' предназначена для чисел, которые соответствуют типу `Fibonacci`, определённому как `type Fibonacci = 1 | 2 | 3 | 5 | 8`. Категория 'Ошибка компиляции' предназначена для чисел, которые не входят в этот тип и при попытке присвоения переменной типа `Fibonacci` приведут к ошибке компиляции. Обратите внимание, что тип `Fibonacci` является объединением литеральных числовых типов, поэтому только указанные числа допустимы.
1234568133. Выход за границы
В этом фрагменте TypeScript-кода допущена ошибка, связанная с использованием литеральных числовых типов. Переменной, которая может принимать только значения 0 или 1, присваивается недопустимое значение. Найдите строку с ошибкой и исправьте присваивание на одно из допустимых значений, чтобы код стал корректным.
let statusCode: 0 | 1;statusCode = 2;console.log(statusCode);4. Функция перемещения
В этом задании вам нужно дополнить код функции move, которая принимает направление в виде числа -1 или 1. Используя выпадающие списки, выберите правильный литеральный тип для аргумента функции из предложенных вариантов. Обратите внимание, что тип должен точно соответствовать допустимым значениям направления.
let position = 0;
function move(direction: input1S) {
position += direction;
return position;
}
const newPosition = move(1);
console.log(newPosition);5. Поиск литералов
Внимательно изучите приведённый фрагмент кода на TypeScript. Ваша задача — найти и выделить кликом все места, где используются числовые литеральные типы (конкретные числовые значения, выступающие в роли типа). Не отмечайте общий тип number, переменные, значения, присваиваемые переменным, или любые другие элементы кода, не являющиеся числовыми литеральными типами. Всего нужно найти и выделить 6 элементов.
type StatusCode = {{200~|~t1}} | {{404~|~t2}} | {{500~|~t3}};
let ok: {{200~|~t4}} = {{200~|~t7}};
let notFound: StatusCode = {{404~|~t8}};
let serverError: {{500~|~t5}} = {{500~|~t9}};
let anyNumber: {{number~|~t10}} = {{1000~|~t11}};
let another: {{200~|~t6}} = {{200~|~t12}};6. Сборка типа статуса
Из предложенных строк соберите корректное определение типа HTTPStatus, который представляет собой объединение числовых литералов 200, 404 и 500. Лишние строки в решение включать не нужно. Убедитесь, что синтаксис TypeScript соблюдён, и тип объявлен корректно.
type HTTPStatus = 200 | 404 | 500;type Status = | 300let status: HTTPStatus;7. Сравнение литералов
Проанализируйте приведённый код на TypeScript. Функция `processValue` принимает аргумент, который может быть только числом 1 или 2 (литеральный тип). Внутри функции используется оператор `switch` для определения возвращаемого значения. Что будет выведено в консоль при вызове функции с аргументом 2? Введите ответ в поле ниже (одно слово или число, в зависимости от того, что возвращает функция).
function processValue(value: 1 | 2): string {
let result: string;
switch (value) {
case 1:
result = "один";
break;
case 2:
result = "два";
break;
default:
result = "неизвестно";
}
return result;
}
const output = processValue(2);
console.log(output);