UnderscoreKO generics and mutators

Add support for generics to UnderscoreKO; Add support for mutating
versions (same type signature but end with underscore)
This commit is contained in:
Max Battcher
2013-08-06 22:13:39 -04:00
parent 74c361e16a
commit 7c8c731de4
+81 -55
View File
@@ -6,91 +6,117 @@
/// <reference path="../knockout/knockout.d.ts" />
/// <reference path="../underscore/underscore.d.ts" />
interface KnockoutObservableArrayFunctions {
interface KnockoutObservableArrayFunctions<T> {
/****
Collections
*****/
each(iterator: _.ListIterator<any, any>, context?: any): any[];
each(iterator: _.ObjectIterator<any, any>, context?: any): any[];
forEach(iterator: _.ObjectIterator<any, any>, context?: any): any[];
forEach(iterator: _.ListIterator<any, any>, context?: any): any[];
each<TResult>(iterator: _.ListIterator<T, TResult>, context?: any): TResult[];
each<TResult>(iterator: _.ObjectIterator<T, TResult>, context?: any): TResult[];
forEach<TResult>(iterator: _.ObjectIterator<T, TResult>, context?: any): TResult[];
forEach<TResult>(iterator: _.ListIterator<T, TResult>, context?: any): TResult[];
map(iterator: _.ListIterator<any, any>, context?: any): any[];
map(iterator: _.ObjectIterator<any, any>, context?: any): any[];
collect(iterator: _.ListIterator<any, any>, context?: any): any[];
collect(iterator: _.ObjectIterator<any, any>, context?: any): any[];
map<TResult>(iterator: _.ListIterator<T, TResult>, context?: any): TResult[];
map<TResult>(iterator: _.ObjectIterator<T, TResult>, context?: any): TResult[];
collect<TResult>(iterator: _.ListIterator<T, TResult>, context?: any): TResult[];
collect<TResult>(iterator: _.ObjectIterator<T, TResult>, 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<TResult>(iterator: _.MemoIterator<T, TResult>, memo: TResult, context?: any): TResult;
inject<TResult>(iterator: _.MemoIterator<T, TResult>, memo: TResult, context?: any): TResult;
foldl<TResult>(iterator: _.MemoIterator<T, TResult>, memo: TResult, context?: any): TResult;
reduceRight(iterator: any, memo: any, context?: any): any[];
foldr(iterator: any, memo: any, context?: any): any[];
reduceRight<TResult>(iterator: _.MemoIterator<T, TResult>, memo: TResult, context?: any): TResult;
foldr<TResult>(iterator: _.MemoIterator<T, TResult>, memo: TResult, context?: any): TResult;
find(iterator: any, context?: any): any;
detect(iterator: any, context?: any): any;
find(iterator: _.ListIterator<T, boolean>, context?: any): T;
detect(iterator: _.ListIterator<T, boolean>, context?: any): T;
filter(iterator: any, context?: any): any[];
select(iterator: any, context?: any): any[];
filter(iterator: _.ListIterator<T, boolean>, context?: any): T[];
filter_(iterator: _.ListIterator<T, boolean>, context?: any): T[];
select(iterator: _.ListIterator<T, boolean>, context?: any): T[];
select_(iterator: _.ListIterator<T, boolean>, context?: any): T[];
where(properties: any): any[];
where<U extends {}>(properties: U): T[];
reject(iterator: any, context?: any): any[];
reject(iterator: _.ListIterator<T, boolean>, context?: any): T[];
reject_(iterator: _.ListIterator<T, boolean>, context?: any): T[];
all(iterator: any, context?: any): bool;
every(iterator: any, context?: any): bool;
all(iterator: _.ListIterator<T, boolean>, context?: any): bool;
every(iterator: _.ListIterator<T, boolean>, context?: any): bool;
any(iterator?: any, context?: any): bool;
some(iterator?: any, context?: any): bool;
any(iterator?: _.ListIterator<T, boolean>, context?: any): bool;
some(iterator?: _.ListIterator<T, boolean>, 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<T, any>, context?: any): any;
min(iterator: _.ListIterator<T, any>, context?: any): any;
sortBy<TSort>(iterator: _.ListIterator<T, TSort>, context?: any): T[];
sortBy(iterator: string, context?: any): T[];
sortBy_<TSort>(iterator: _.ListIterator<T, TSort>, context?: any): T[];
sortBy_(iterator: string, context?: any): T[];
groupBy<TSort>(iterator: _.ListIterator<T, TSort>): _.Dictionary<T[]>;
groupBy(iterator: string): _.Dictionary<T[]>;
groupBy_<TSort>(iterator: _.ListIterator<T, TSort>): _.Dictionary<T[]>;
groupBy_(iterator: string): _.Dictionary<T[]>;
countBy(iterator: _.ListIterator<T, any>): _.Dictionary<number[]>;
countBy(iterator: string): _.Dictionary<number[]>;
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<TSort>(isSorted?: bool, iterator?: _.ListIterator<T, TSort>): T[];
uniq_<TSort>(isSorted?: bool, iterator?: _.ListIterator<T, TSort>): T[];
unique<TSort>(isSorted?: bool, iterator?: _.ListIterator<T, TSort>): T[];
unique_<TSort>(isSorted?: bool, iterator?: _.ListIterator<T, TSort>): 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<TSort>(value: T, iterator?: _.ListIterator<T, TSort>): number;
range(stop: number): any[];
range(start: number, stop: number, step?: number): any[];