From 7c8c731de4d1229a2c88b8e3651462bc3b6a93e5 Mon Sep 17 00:00:00 2001 From: Max Battcher Date: Tue, 6 Aug 2013 22:13:39 -0400 Subject: [PATCH] UnderscoreKO generics and mutators Add support for generics to UnderscoreKO; Add support for mutating versions (same type signature but end with underscore) --- underscore-ko/underscore-ko.d.ts | 136 ++++++++++++++++++------------- 1 file changed, 81 insertions(+), 55 deletions(-) diff --git a/underscore-ko/underscore-ko.d.ts b/underscore-ko/underscore-ko.d.ts index 241a0db12..3613192c8 100644 --- a/underscore-ko/underscore-ko.d.ts +++ b/underscore-ko/underscore-ko.d.ts @@ -6,91 +6,117 @@ /// /// -interface KnockoutObservableArrayFunctions { +interface KnockoutObservableArrayFunctions { /**** Collections *****/ - each(iterator: _.ListIterator, context?: any): any[]; - each(iterator: _.ObjectIterator, context?: any): any[]; - forEach(iterator: _.ObjectIterator, context?: any): any[]; - forEach(iterator: _.ListIterator, context?: any): any[]; + each(iterator: _.ListIterator, context?: any): TResult[]; + each(iterator: _.ObjectIterator, context?: any): TResult[]; + forEach(iterator: _.ObjectIterator, context?: any): TResult[]; + forEach(iterator: _.ListIterator, context?: any): TResult[]; - map(iterator: _.ListIterator, context?: any): any[]; - map(iterator: _.ObjectIterator, context?: any): any[]; - collect(iterator: _.ListIterator, context?: any): any[]; - collect(iterator: _.ObjectIterator, context?: any): any[]; + map(iterator: _.ListIterator, context?: any): TResult[]; + map(iterator: _.ObjectIterator, context?: any): TResult[]; + collect(iterator: _.ListIterator, context?: any): TResult[]; + collect(iterator: _.ObjectIterator, context?: any): TResult[]; - reduce(iterator: any, memo: any, context?: any): any; - inject(iterator: any, memo: any, context?: any): any; - foldl(iterator: any, memo: any, context?: any): any; + reduce(iterator: _.MemoIterator, memo: TResult, context?: any): TResult; + inject(iterator: _.MemoIterator, memo: TResult, context?: any): TResult; + foldl(iterator: _.MemoIterator, memo: TResult, context?: any): TResult; - reduceRight(iterator: any, memo: any, context?: any): any[]; - foldr(iterator: any, memo: any, context?: any): any[]; + reduceRight(iterator: _.MemoIterator, memo: TResult, context?: any): TResult; + foldr(iterator: _.MemoIterator, memo: TResult, context?: any): TResult; - find(iterator: any, context?: any): any; - detect(iterator: any, context?: any): any; + find(iterator: _.ListIterator, context?: any): T; + detect(iterator: _.ListIterator, context?: any): T; - filter(iterator: any, context?: any): any[]; - select(iterator: any, context?: any): any[]; + filter(iterator: _.ListIterator, context?: any): T[]; + filter_(iterator: _.ListIterator, context?: any): T[]; + select(iterator: _.ListIterator, context?: any): T[]; + select_(iterator: _.ListIterator, context?: any): T[]; - where(properties: any): any[]; + where(properties: U): T[]; - reject(iterator: any, context?: any): any[]; + reject(iterator: _.ListIterator, context?: any): T[]; + reject_(iterator: _.ListIterator, context?: any): T[]; - all(iterator: any, context?: any): bool; - every(iterator: any, context?: any): bool; + all(iterator: _.ListIterator, context?: any): bool; + every(iterator: _.ListIterator, context?: any): bool; - any(iterator?: any, context?: any): bool; - some(iterator?: any, context?: any): bool; + any(iterator?: _.ListIterator, context?: any): bool; + some(iterator?: _.ListIterator, context?: any): bool; - contains(list: any, value: any): bool; - contains(value: any): bool; - include(list: any, value: any): bool; - include(value: any): bool; + contains(value: T): bool; + include(value: T): bool; - invoke(methodName: string, arguments: any[]): any; invoke(methodName: string, ...arguments: any[]): any; + invoke_(methodName: string, ...arguments: any[]): any; - pluck(propertyName: string): string[]; - max(iterator?: any, context?: any): any; - min(iterator?: any, context?: any): any; - sortBy(iterator?: any, context?: any): any; - groupBy(iterator: any): any; - countBy(iterator: any): any; - shuffle(): any[]; + pluck(propertyName: string): T[]; + max(iterator: _.ListIterator, context?: any): any; + min(iterator: _.ListIterator, context?: any): any; + sortBy(iterator: _.ListIterator, context?: any): T[]; + sortBy(iterator: string, context?: any): T[]; + sortBy_(iterator: _.ListIterator, context?: any): T[]; + sortBy_(iterator: string, context?: any): T[]; + groupBy(iterator: _.ListIterator): _.Dictionary; + groupBy(iterator: string): _.Dictionary; + groupBy_(iterator: _.ListIterator): _.Dictionary; + groupBy_(iterator: string): _.Dictionary; + countBy(iterator: _.ListIterator): _.Dictionary; + countBy(iterator: string): _.Dictionary; + shuffle(): T[]; + shuffle_(): T[]; size(): number; /**** Arrays *****/ - first(n?: number): any; - head(n?: number): any; - take(n?: number): any; + first(): T; + first(n: number): T[]; + head(): T; + head(n: number): T[]; + take(): T; + take(n: number): T[]; - initial(n?: number): any[]; + initial(n?: number): T[]; - last(n?: number): any; + last(): T; + last(n: number): T[]; - rest(n?: number): any[]; - tail(n?: number): any[]; - drop(n?: number): any[]; + rest(n?: number): T[]; + rest_(n?: number): T[]; + tail(n?: number): T[]; + tail_(n?: number): T[]; + drop(n?: number): T[]; + drop_(n?: number): T[]; - compact(): any[]; + compact(): T[]; + compact_(): T[]; flatten(shallow?: bool): any[]; - without(...values: any[]): any[]; - union(...arrays: any[][]): any[]; - intersection(...arrays: any[][]): any[]; - difference(...others: any[][]): any[]; + flatten_(shallow?: bool): any[]; + without(...values: T[]): T[]; + without_(...values: T[]): T[]; + union(...arrays: T[][]): T[]; + union_(...arrays: T[][]): T[]; + intersection(...arrays: T[][]): T[]; + intersection_(...arrays: T[][]): T[]; + difference(...others: T[][]): T[]; + difference_(...others: T[][]): T[]; - uniq(isSorted?: bool, iterator?: any): any[]; - unique(isSorted?: bool, iterator?: any): any[]; + uniq(isSorted?: bool, iterator?: _.ListIterator): T[]; + uniq_(isSorted?: bool, iterator?: _.ListIterator): T[]; + unique(isSorted?: bool, iterator?: _.ListIterator): T[]; + unique_(isSorted?: bool, iterator?: _.ListIterator): T[]; zip(...arrays: any[]): any[]; - object(values?: any[]): any; - indexOf(value: any, isSorted?: bool): number; - lastIndexOf(value: any, fromIndex?: number): number; - sortedIndex(valueL: any, iterator?: any): number; + zip_(...arrays: any[]): any[]; + object(): any; + indexOf(value: T, isSorted?: bool): number; + lastIndexOf(value: T, fromIndex?: number): number; + lastIndexOf(value: T, isSorted?: boolean): number; + sortedIndex(value: T, iterator?: _.ListIterator): number; range(stop: number): any[]; range(start: number, stop: number, step?: number): any[];