Добавили статус заказа 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 — он проверяет полноту сам
