Функция first с типом T вернула undefined, и компилятор этого не заметил
function first<T>(items: T[]): T {
return items[0];
}
const order = first(orders); // orders: Order[]
console.log(order.total.toFixed(2));
Когда список заказов пуст, код падает с Cannot read properties of undefined, хотя проект собирается в strict без ошибок. Почему компилятор пропустил и как исправить?
- Доступ по индексу типизирован как T без undefined — вернуть T | undefined
- Дженерики в strict-режиме не проверяются, нужно указать тип явно
- Компилятор не видит пустой массив, потому что orders пришёл из API
- Нужно написать first<Order>(orders), тогда ошибка найдётся
