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

Функция 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), тогда ошибка найдётся

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

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

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

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