Обычно мы привыкли, что тип boolean может принимать два значения: true или false. Однако в TypeScript можно сузить этот тип до конкретного литерала. Это называется Boolean Literal Types.
Например, вы можете объявить тип, который допускает только значение true: type Success = true;. Если попытаться присвоить такой переменной false, компилятор выдаст ошибку. Это кажется избыточным в изоляции, но становится мощным инструментом при создании сложных структур типов, перегрузках функций или условных типах, где важно жестко зафиксировать состояние.
В этих уроках и практических заданиях вы научитесь объявлять булевы литералы, отличать их от обычного boolean и использовать для строгой типизации логики вашего приложения. Тренажер поможет закрепить синтаксис и понять поведение таких типов.
- Модуль 1: Введение в TypeScript
- Модуль 2: Примитивные типы
- Модуль 3: Специальные типы
- Модуль 4: Массивы
- Модуль 5: Кортежи (Tuples)
- Модуль 6: Объекты
- Модуль 7: Функции
- Модуль 8: Union типы
- Модуль 9: Литеральные типы
- String Literal Types.
- Number Literal Types.
- Boolean Literal Types.
- Литеральные Union типы.
- as const утверждение.
- Модуль 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. Объявление литерального типа
В TypeScript литеральные типы позволяют ограничить возможные значения переменной конкретными литералами. Например, тип boolean может быть сужен до литерального типа true или false. В этом задании вам нужно объявить тип переменной isActive так, чтобы она могла принимать только значение true. Заполните пропуск, указав правильный литеральный тип после знака присваивания. Код должен быть синтаксически корректным и соответствовать концепции boolean literal types.
let isActive: input1S = true;
// Эта переменная должна всегда иметь значение true
// Попытка присвоить false вызовет ошибку компиляции2. Проверка совместимости
Проанализируйте приведённый фрагмент кода на TypeScript. Обратите внимание на объявление переменной с конкретным литеральным типом и последующую попытку присвоения ей значения другого литерального типа. Вам необходимо предсказать поведение компилятора TypeScript: произойдёт ли ошибка компиляции или код успешно скомпилируется и выполнится.
let flag: true = true;
let result = false;
// Попытка присвоения
flag = result;3. Создание типа флага
Из предложенных строк соберите корректное определение типа-литерала boolean в TypeScript. Тип должен называться IsEnabled и быть равным true. Затем объявите переменную с этим типом. Игнорируйте лишние строки, которые не соответствуют условию или нарушают порядок объявления.
type IsEnabled = true;type IsEnabled = false;type IsEnabled = boolean;const enabled: IsEnabled = true;let flag: boolean;4. Неверное присваивание
В данном фрагменте кода TypeScript переменная объявлена с литеральным типом false, но ей присваивается значение true. Это приводит к ошибке типизации, так как литеральный тип false допускает только одно конкретное значение. Исправьте присваивание, чтобы значение переменной соответствовало её типу.
let isReady: false = true;console.log(isReady);5. Поиск литеральных типов
Внимательно изучите приведённый фрагмент кода на TypeScript. Ваша задача — найти и отметить только те места, где используются литеральные типы `true` или `false` (то есть `true` или `false`, указанные именно как тип, а не как значение). Не отмечайте обычный тип `boolean`, а также не отмечайте значения `true` и `false`, которые используются как значения (даже если они присваиваются переменной с литеральным типом).
let isDone: {{boolean~|~t1}} = false;
let trueLiteral: {{true~|~t2}} = {{true~|~t3}};
let falseLiteral: {{false~|~t4}} = {{false~|~t5}};
type MyTrue = {{true~|~t6}};
type MyFalse = {{false~|~t8}};
let a: MyTrue = {{true~|~t7}};
let b: MyFalse = {{false~|~t9}};6. Разбор объявления
Разметьте в строке объявления переменной TypeScript следующие элементы: имя переменной, литеральный тип (boolean literal type) и присваиваемое значение. Обратите внимание, что литеральные типы позволяют указывать конкретные значения (например, true, false, определённые строки или числа) в качестве типа переменной. В данном задании доступны три категории для разметки: имя переменной, тип-литерал и значение.
let {{isDone~|~t1}}: {{true~|~t2}} = {{true~|~t3}};