From 35036ae8dd9b89f4ccd9a7d0f8f5e75de01fe198 Mon Sep 17 00:00:00 2001 From: Daniel Beckwith Date: Fri, 1 May 2015 00:31:59 -0400 Subject: [PATCH 1/2] adds function type for Dictionary version of reduce (issue 4244) --- underscore/underscore.d.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/underscore/underscore.d.ts b/underscore/underscore.d.ts index 7ff9aa5eb..c5815f51a 100644 --- a/underscore/underscore.d.ts +++ b/underscore/underscore.d.ts @@ -53,6 +53,10 @@ declare module _ { (prev: TResult, curr: T, index: number, list: T[]): TResult; } + interface MemoObjectIterator { + (prev: TResult, curr: T, key: string, list: any): TResult; + } + interface Collection { } // Common interface between Arrays and jQuery objects @@ -181,7 +185,7 @@ interface UnderscoreStatic { reduce( list: _.Dictionary, - iterator: _.ObjectIterator, + iterator: _.MemoObjectIterator, memo?: TResult, context?: any): TResult; From 92acb8f42f8a2886359a0c6c0746211a8dd30cfb Mon Sep 17 00:00:00 2001 From: Daniel Beckwith Date: Sat, 2 May 2015 12:50:41 -0400 Subject: [PATCH 2/2] Changed iterators to use _.List and _.Dictionary, added test. --- underscore/underscore-tests.ts | 1 + underscore/underscore.d.ts | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/underscore/underscore-tests.ts b/underscore/underscore-tests.ts index 3fb993a3d..60c1708d0 100644 --- a/underscore/underscore-tests.ts +++ b/underscore/underscore-tests.ts @@ -11,6 +11,7 @@ _.map({ one: 1, two: 2, three: 3 }, (value, key) => value * 3); //var sum = _.reduce([1, 2, 3], (memo, num) => memo + num, 0); // https://typescript.codeplex.com/workitem/1960 var sum = _.reduce([1, 2, 3], (memo, num) => memo + num, 0); sum = _.reduce([1, 2, 3], (memo, num) => memo + num); // memo is optional #issue 5 github +sum = _.reduce({'a':'1', 'b':'2', 'c':'3'}, (memo, numstr) => memo + (+numstr)); var list = [[0, 1], [2, 3], [4, 5]]; //var flat = _.reduceRight(list, (a, b) => a.concat(b), []); // https://typescript.codeplex.com/workitem/1960 diff --git a/underscore/underscore.d.ts b/underscore/underscore.d.ts index c5815f51a..03088bffd 100644 --- a/underscore/underscore.d.ts +++ b/underscore/underscore.d.ts @@ -41,22 +41,6 @@ declare module _ { escape?: RegExp; } - interface ListIterator { - (value: T, index: number, list: T[]): TResult; - } - - interface ObjectIterator { - (element: T, key: string, list: any): TResult; - } - - interface MemoIterator { - (prev: TResult, curr: T, index: number, list: T[]): TResult; - } - - interface MemoObjectIterator { - (prev: TResult, curr: T, key: string, list: any): TResult; - } - interface Collection { } // Common interface between Arrays and jQuery objects @@ -68,6 +52,22 @@ declare module _ { interface Dictionary extends Collection { [index: string]: T; } + + interface ListIterator { + (value: T, index: number, list: List): TResult; + } + + interface ObjectIterator { + (element: T, key: string, list: Dictionary): TResult; + } + + interface MemoIterator { + (prev: TResult, curr: T, index: number, list: List): TResult; + } + + interface MemoObjectIterator { + (prev: TResult, curr: T, key: string, list: Dictionary): TResult; + } } interface UnderscoreStatic {