Используйте T для элемента массива и A для аккумулятора; callback принимает A и T, а возвращает A.
Напишите типы для функции reduce с использованием generics (для массива, callback и результата).
Используйте 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 сохраняет стандартный обход, включая пропуск пустых позиций массива.