From a5be0c44fad921f5a5c9e384913278c5bc40c471 Mon Sep 17 00:00:00 2001 From: marlonpassos Date: Mon, 29 Jul 2024 01:11:09 -0300 Subject: [PATCH] feat(sum): ensures that typing will work with things other than numbers, objects --- src/number/sum.ts | 6 +++--- tests/number/sum.test.ts | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/number/sum.ts b/src/number/sum.ts index 2121f490..5de91329 100644 --- a/src/number/sum.ts +++ b/src/number/sum.ts @@ -19,12 +19,12 @@ * // => 2 * ``` */ -export function sum(array: readonly T[]): number -export function sum( +export function sum(array: readonly number[]): number +export function sum( array: readonly T[], fn: (item: T) => number, ): number -export function sum( +export function sum( array: readonly any[], fn?: (item: T) => number, ): number { diff --git a/tests/number/sum.test.ts b/tests/number/sum.test.ts index cc1209a0..12dbfaa4 100644 --- a/tests/number/sum.test.ts +++ b/tests/number/sum.test.ts @@ -22,4 +22,14 @@ describe('sum', () => { const result = _.sum(list, x => (x ? 1 : 0)) expect(result).toBe(3) }) + + test('gracefully handles matrix input', () => { + const list = [ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9], + ] + const result = _.sum(list, x => _.sum(x)) + expect(result).toBe(45) + }) })