diff --git a/types/ramda/index.d.ts b/types/ramda/index.d.ts index 081a62cbd7..9004ec7651 100644 --- a/types/ramda/index.d.ts +++ b/types/ramda/index.d.ts @@ -16,7 +16,7 @@ // Nikita Moshensky // Ethan Resnick // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.4 +// TypeScript Version: 2.6 declare let R: R.Static; @@ -679,7 +679,7 @@ declare namespace R { * on each element, and grouping the results according to values returned. */ groupBy(fn: (a: T) => string, list: ReadonlyArray): { [index: string]: T[] }; - groupBy(fn: (a: T) => string): (list: ReadonlyArray) => { [index: string]: T[] }; + groupBy(fn: (a: T) => string): (list: ReadonlyArray) => { [index: string]: T[] }; /** * Takes a list and returns a list of lists where each sublist's elements are all "equal" according to the provided equality function diff --git a/types/ramda/ramda-tests.ts b/types/ramda/ramda-tests.ts index c32ab72028..4b5abfe19f 100644 --- a/types/ramda/ramda-tests.ts +++ b/types/ramda/ramda-tests.ts @@ -664,6 +664,36 @@ interface Obj { byGrade(students); }; +() => { + interface MyObject { + id: string; + quantity: number; + } + + const reduceWithCombinedQuantities = (items: MyObject[]) => + items.reduce( + (acc, item) => ({...item, quantity: acc.quantity + item.quantity}), + {id: '', quantity: 0}, + ); + + const combineMyObjects = R.pipe( + R.groupBy(s => s.id), + R.values, + R.map(reduceWithCombinedQuantities), + ); + + const combined = combineMyObjects([ + {id: 'foo', quantity: 4}, + {id: 'bar', quantity: 3}, + {id: 'foo', quantity: 2}, + ]); + + return { + id: combined[0].id, + quantity: combined[0].quantity + }; +}; + () => { R.groupWith(R.equals)([0, 1, 1, 2, 3, 5, 8, 13, 21]);