Updates to Underscore definitions & tests

This commit is contained in:
Boris Yankov
2012-10-08 02:36:30 +03:00
parent 9f369bc856
commit ee07aeb4d6
2 changed files with 270 additions and 254 deletions
+60 -35
View File
@@ -1,9 +1,8 @@
// Type definitions for Underscore 1.4.1
// https://github.com/borisyankov/DefinitelyTyped
interface KeyValuePair {
key: string;
value: any;
interface UnderscoreWrappedObject {
value () : any;
}
interface TemplateSettings {
@@ -12,40 +11,59 @@ interface TemplateSettings {
escape?: RegExp;
}
interface ListIterator {
(value, key, list?): void;
}
interface ObjectIterator {
(element, index, list?): void;
}
interface UnderscoreStatic {
/****
Collections
*****/
each(list: any[], iterator: any, context?: any): any[]; // interface Iterator = (element, index, list) => any;
each(obj: any, iterator: any, context?: any): any[]; // (value, key, list)
forEach(list: any[], iterator: any, context?: any): any[];
forEach(obj: any, iterator: any, context?: any): any[];
each(list: any[], iterator: ListIterator, context?: any): any[];
each(object: any, iterator: ObjectIterator, context?: any): any[];
forEach(list: any[], iterator: ObjectIterator, context?: any): any[];
forEach(object: any, iterator: ListIterator, context?: any): any[];
map(list: any[], iterator: any, context?: any): any[];
map(obj: any, iterator: any, context?: any): any[];
collect(list: any[], iterator: any, context?: any): any[];
collect(obj: any, iterator: any, context?: any): any[];
map(list: any[], iterator: ListIterator, context?: any): any[];
map(object: any, iterator: ObjectIterator, context?: any): any[];
collect(list: any[], iterator: ListIterator, context?: any): any[];
collect(object: any, iterator: ObjectIterator, context?: any): any[];
reduce(list: any[], iterator: any, memo: any, context?: any): any[];
reduce(list: any[], iterator: any, memo: any, context?: any): any[]; // TODO iterator
inject(list: any[], iterator: any, memo: any, context?: any): any[];
foldl(list: any[], iterator: any, memo: any, context?: any): any[];
reduceRight(list: any[], iterator: any, memo: any, context?: any): any[];
foldr(list: any[], iterator: any, memo: any, context?: any): any[];
find(list: any[], iterator: any, context?: any): any;
detect(list: any[], iterator: any, context?: any): any;
filter(list: any[], iterator: any, context?: any): any[];
select(list: any[], iterator: any, context?: any): any[];
where(list: any[], properties: any): any[];
reject(list: any[], iterator: any, context?: any): any[];
all(list: any[], iterator: any, context?: any): bool;
_any(list: any[], iterator?: any, context?: any): bool;
every(list: any[], iterator: any, context?: any): bool;
any(list: any[], iterator?: any, context?: any): bool;
some(list: any[], iterator?: any, context?: any): bool;
contains(list: any, value: any): bool;
contains(list: any[], value: any): bool;
include(list: any, value: any): bool;
include(list: any[], value: any): bool;
invoke(list: any[], methodName: string, arguments: any[]): any;
invoke(obj: any, methodName: string, ...arguments: any[]): any;
invoke(object: any, methodName: string, ...arguments: any[]): any;
pluck(list: any[], propertyName: string): string[];
max(list: any[], iterator?: any, context?: any): any;
@@ -63,18 +81,25 @@ interface UnderscoreStatic {
first(array: any[], n?: number): any;
head(array: any[], n?: number): any;
take(array: any[], n?: number): any;
initial(array: any[], n?: number): any[];
last(array: any[], n?: number): any;
rest(array: any[], n?: number): any[];
tail(array: any[], n?: number): any[];
drop(array: any[], n?: number): any[];
compact(array: any[]): any[];
flatten(array: any[], shallow?: bool): any[];
without(array: any[], ...values: any[]): any[];
union(...arrays: any[]): any[];
intersection(...arrays: any[]): any[];
difference(array: any[], ...others: any[]): any[];
union(...arrays: any[][]): any[];
intersection(...arrays: any[][]): any[];
difference(array: any[], ...others: any[][]): any[];
uniq(array: any[], isSorted?: bool, iterator?: any): any[];
unique(array: any[], isSorted?: bool, iterator?: any): any[];
zip(...arrays: any[]): any[];
object(list: any[], values: any[]): any;
indexOf(array: any[], value: any, isSorted?: bool): number;
@@ -86,8 +111,8 @@ interface UnderscoreStatic {
/****
Functions
*****/
bind(func: any, context: any, ...arguments: any[]): () => any;
bindAll(obj: any, ...methodNames: string[]): any;
bind(func: (...as : any[]) => any, context: any, ...arguments: any[]): () => any;
bindAll(object: any, ...methodNames: string[]): any;
memoize(func: any, hashFunction?: any): any;
defer(func: () => any);
delay(func: any, wait: number, ...arguments: any[]): any;
@@ -96,7 +121,7 @@ interface UnderscoreStatic {
debounce(func: any, wait: number, immediate?: bool): any;
once(func: any): any;
after(count: number, func: any): any;
wrap(func: any, wrapper: any): () => any;
wrap(func: (...as : any[]) => any, wrapper: any): () => any;
compose(...functions: any[]): any;
/****
@@ -104,17 +129,18 @@ interface UnderscoreStatic {
*****/
keys(object: any): any[];
values(object: any): any[];
pairs(object: any): KeyValuePair[];
invert(object: any): any[];
pairs(object: any): any[];
invert(object: any): any;
functions(object: any): string[];
methods(object: any): string[];
extend(destination: any, sources: any): any;
extend(destination: any, ...sources: any[]): any;
pick(object: any, ...keys: string[]): any;
omit(object: any, key: string): any;
omit(object: any, keys: string[]): any;
defaults(object: any, defaults: any): any;
omit(object: any, ...keys: string[]): any;
defaults(object: any, ...defaults: any[]): any;
clone(object: any): any;
tap(object: any, interceptor: any): any;
tap(object: any, interceptor: (...as : any[]) => any): any;
has(object: any, key: string): bool;
isEqual(object: any, other: any): bool;
isEmpty(object: any): bool;
@@ -136,23 +162,22 @@ interface UnderscoreStatic {
/****
Utility
*****/
noConflict(): UnderscoreStatic;
noConflict(): any;
identity(value: any): any;
times(n: number, iterator: any, context?: any): any[];
times(n: number, iterator: (index : number) => void, context?: any): void;
random(min: number, max: number): number;
mixin(object: any): any;
mixin(object: any): void;
uniqueId(prefix: string): string;
uniqueId(): number;
escape(string: string): string;
result(object: any, property: any): any;
escape(str: string): string;
result(object: any, property: string): any;
templateSettings: TemplateSettings;
template(templateString: string, data?: any, settings?: any): (data: any) => string;
template(templateString: string, data?: any, settings?: any): (...data: any[]) => string;
/****
Chaining
*****/
chain(obj: any): any;
// (obj).value()
chain(object: any): UnderscoreWrappedObject;
}
declare var _: UnderscoreStatic;