Вступить в клуб →
сложнаявопросTypeScript: дженерики и контракты с API

Добавили статус заказа refunded, и бейдж молча показывает «Неизвестно»

type OrderStatus = "new" | "paid" | "shipped" | "refunded";   // refunded добавлен сегодня

function statusLabel(status: OrderStatus): string {
  switch (status) {
    case "new": return "Новый";
    case "paid": return "Оплачен";
    case "shipped": return "Отправлен";
    default: return "Неизвестно";
  }
}

Таких switch в проекте двенадцать. Как сделать, чтобы при добавлении нового статуса компилятор сам указал на все места, где его не обработали?

  • В default присвоить status переменной типа never — необработанный вариант не скомпилируется
  • Убрать default — TypeScript всегда проверяет полноту switch
  • Бросать в default исключение — компилятор увидит недостижимый код
  • Заменить объединение строк на enum — он проверяет полноту сам

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела