Напишите типы для функции reduce с использованием generics (для массива, callback и результата).

Используйте T для элемента массива и A для аккумулятора; callback принимает A и T, а возвращает A.

Короткий ответ

Что ответить на собеседовании

Используйте T для элемента массива и A для аккумулятора; callback принимает A и T, а возвращает A.

Подробный разбор

Ответ с пояснениями

Используйте T для элемента массива и A для аккумулятора; callback принимает A и T, а возвращает A.

Вариант с обязательным начальным значением:

function reduce<T, A>(
  items: readonly T[],
  callback: (acc: A, item: T, index: number, array: readonly T[]) => A,
  initial: A,
): A {
  return items.reduce((acc, item, index) => callback(acc, item, index, items), initial);
}

Для варианта без initial понадобится отдельная перегрузка и правила пустого массива. Здесь встроенный reduce сохраняет стандартный обход, включая пропуск пустых позиций массива.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее