Литеральные типы

Глянем сразу на примере что это такое:

let b = 'hi';

Если мы глянем на переменную, ее тип будет string

alt text

Но мы можем задать по сути кастомный тип, например вот так:

let b:'hello' = 'hello';

Теперь переменная b может принимать только 'hello', и ничего больше.

alt text

Теперь посмотрим как это можно применить на практике

type CardinalDirection = 'North' | 'East' | 'South' | 'West'; // у нас есть тип с литеральными значениями

function move(distance: number, direction: CardinalDirection) {
    return console.log(` I walk ${distance == 1 ? `${distance} meter`: `${distance} meters`} ${direction}`);
  }

move(2,'West'); // I walk 2 meters West
move(3 '') // // Здесь мы ничего не можем указать, кроме указанных нами типов

Ide нам сразу подсказывает, что мы можем указать.

alt text

Вот и все, мы просто создаем свое определенное строковое фиксированное значение, которое является нашим типом.