Ответ
Литеральные типы в TypeScript позволяют указывать конкретные значения переменных или свойств. Они сужают тип до определённого значения, а не диапазона.
type Direction = 'left' | 'right' | 'up' | 'down';
let move: Direction = 'left'; // корректно
move = 'diagonal'; // ошибка, такого значения нет в типе
Используются для:
- Ограничения возможных значений (например, статусы, направления)
- Создания перечислений без
enum - Уточнения возвращаемых значений функций
Особенности:
- Могут быть строковыми, числовыми или булевыми
- Часто комбинируются с union-типами
- Позволяют TypeScript точнее проверять код
Ответ 18+ 🔞
Слушай, а вот эта ваша TypeScript-шная магия с литеральными типами — это ж просто песня, а не фича! Ну реально, как будто наконец-то дали в руки не тупой молоток, а хирургический скальпель, блядь.
Вот смотри, раньше ты объявлял переменную direction как строку, и туда мог вписать что угодно: 'left', 'right', а хоть бы и 'нахуй'. А компилятор тебе: "Да похуй, чувак, строка же, всё ок". И потом в рантайме — пиздец, ошибка, потому что твоя функция 'нахуй' не понимает.
А теперь делаешь так:
type Direction = 'left' | 'right' | 'up' | 'down';
let move: Direction = 'left'; // Всё чётко, епта
move = 'diagonal'; // А вот тут тебе сразу, в рот меня чих-пых, подсветка красным: "Не-не-не, дружок, 'diagonal' — это не в нашей конституции прописано!"
Вообще, удивление пиздец, насколько это удобно. Используется эта хуйня, например:
- Чтобы ограничить возможные значения, как в том примере с направлением. Не просто строка, а строка из конкретного списка. Типа статусы заказа: 'new', 'processing', 'delivered', 'lost-in-transit-ёпта'.
- Чтобы создавать перечисления без этого громоздкого
enum, который иногда ведёт себя как манда с ушами. - Чтобы функции возвращали не абы что, а конкретные, предсказуемые значения. Сказали, что функция вернёт 'success' или 'error' — значит, вернёт именно это, а не 'ойвсёпропало'.
Особенности, которые надо запомнить, чтобы не облажаться:
- Литералы могут быть не только строковыми, но и числовыми или даже булевыми.
let isActive: true = true;— и попробуй запихни тудаfalse, получишь по ебалу от компилятора. - Они часто идут в связке с union-типами (это вот эта палочка
|). Это и есть их основная сила, блядь. - Главная фишка — они сужают тип. TypeScript благодаря этому начинает проверять твой код так пристально, что аж волосы дыбом. Чуть ошибешься — сразу кричит: "Э, сабака, сука, э, бошка думай!".
Короче, инструмент овердохуище полезный. Сначала кажется, что мелочь, а потом без него как без рук.