exportfunction reduce<T, U>(
collection: T[],
iteratee: (accumulator: U, item: T) => U,
initialAccumulator: U
): U {
let accumulator = initialAccumulator;
for (const item of collection) {
accumulator = iteratee(accumulator, item);
}
return accumulator;
}