TypeScriptУрок 7 из 16

Литеральные типы и сужение

Литеральный тип — это одно конкретное значение, например "red". Объединение литералов превращается в короткий список разрешённых вариантов.

Главное

  • type Size = "S" | "M" | "L" — опечатку "XL" компилятор не пропустит.
  • Сужение: после проверки === или typeof TypeScript уточняет тип в этой ветке.
  • switch по литералам сужает тип в каждом case.
  • Если обработаны все варианты, return после switch не нужен.

Пример

type Size = "S" | "M" | "L"; function cupPrice(size: Size): number {  if (size === "S") return 2;  if (size === "M") return 3;  return 4; // only "L" is left here} const order: Size = "M";// const wrong: Size = "XL"; // error: "XL" is not assignable to type Size function describe(value: string | number | null): string {  if (value === null) return "empty";  if (typeof value === "number") return `number ${value.toFixed(1)}`;  return `text ${value.toUpperCase()}`;} console.log(`Cup ${order}: ${cupPrice(order)}`);console.log(describe(null));console.log(describe(2));console.log(describe("hi"));

В cupPrice после двух if остаётся только "L". В describe каждая проверка отсекает один вариант: сначала null, потом number, и в конце остаётся string.

Задание

Как пользоваться редактором⌘ Enter или Ctrl Enter — запустить код, ⇧ ⌘ Enter — проверить задание.Tab и Shift Tab сдвигают строку или выделение; Esc, затем Tab — выйти из редактора.Проверка сравнивает то, что напечатала программа, с заданием; пробелы в конце строк не важны.После двух неудачных проверок можно открыть решение. Ваш код сохраняется в этом браузере.

Ограничьте тип Light тремя цветами и напишите next через switch: red → green → yellow → red. Программа выводит «1: red», «2: green», «3: yellow», «4: red».

Вывод

Здесь появится то, что напечатает программа.