PassFront
  1. PassFront
  2. База знаний
  3. Базовые типы

Что такое литеральные типы в TypeScript?

Базовые типы

Литеральный тип — тип, у которого единственно допустимое значение: конкретная строка, число или true/false. Он сужает тип вроде string до точного набора значений.

let direction: 'left' | 'right' = 'left';
direction = 'up'; // ошибка

type Status = 'idle' | 'loading' | 'error';
type Dice = 1 | 2 | 3 | 4 | 5 | 6;

Где применяют

  • Замена enum: набор допустимых строк через union.
  • Дискриминантные поля в объединениях: { type: 'success'; data: T } | { type: 'error'; message: string }.
  • Типизация параметров: function setAlign(a: 'left' | 'center' | 'right').
  • Шаблонные литеральные типы: ` type Event = on${Capitalize<string>} `.

Расширение типа

const a = 'hello';  // тип 'hello'
let b = 'hello';    // тип string
const obj = { mode: 'dark' }; // mode: string, а не 'dark'

Свойства изменяемого объекта и переменные let расширяются до string. Чтобы сохранить литерал, используют as const или satisfies.

Коротко для собеседования

Литеральный тип допускает одно конкретное значение. В union они дают набор вариантов, используются как замена enum и дискриминанты. Литерал расширяется до string для let и свойств объектов, поэтому нужны as const или satisfies.

Другие вопросы раздела