All files / iterable/src sum.ts

100% Statements 4/4
100% Branches 2/2
100% Functions 2/2
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 211x                               2x 3x      
import { reduce } from "./reduce";
 
/**
 * Sums all {@link number}s of an {@link Iterable}.
 *
 * @example
 * ```ts
 * const result = sum([1,2,3]);
 * console.log(result); // 6
 * ```
 *
 * @see {@link avg} and {@link reduce} for similar operations.
 *
 * @param iterable - the {@link Iterable} to sum
 * @returns the sum of all {@link number}s, or `undefined` if {@link Iterable} was empty
 */
export const sum = reduce<number, number | undefined>(
  (acc, val) => (acc ?? 0) + val,
  undefined
);