mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-04-24 05:06:02 +08:00
Merge pull request #9225 from delphinus35/feature/backbone-underscore-methods
Feature/backbone underscore methods
This commit is contained in:
102
backbone/backbone-global.d.ts
vendored
102
backbone/backbone-global.d.ts
vendored
@@ -173,8 +173,12 @@ declare namespace Backbone {
|
||||
invert(): any;
|
||||
pick(keys: string[]): any;
|
||||
pick(...keys: string[]): any;
|
||||
pick(fn: (value: any, key: any, object: any) => any): any;
|
||||
omit(keys: string[]): any;
|
||||
omit(...keys: string[]): any;
|
||||
omit(fn: (value: any, key: any, object: any) => any): any;
|
||||
chain(): any;
|
||||
isEmpty(): boolean;
|
||||
}
|
||||
|
||||
class Collection<TModel extends Model> extends ModelBase {
|
||||
@@ -223,58 +227,72 @@ declare namespace Backbone {
|
||||
private _removeReference(model: TModel): void;
|
||||
private _onModelEvent(event: string, model: TModel, collection: Collection<TModel>, options: any): void;
|
||||
|
||||
/**
|
||||
* Return a shallow copy of this collection's models, using the same options as native Array#slice.
|
||||
*/
|
||||
slice(min: number, max?: number): TModel[];
|
||||
|
||||
// mixins from underscore
|
||||
|
||||
all(iterator: (element: TModel, index: number) => boolean, context?: any): boolean;
|
||||
any(iterator: (element: TModel, index: number) => boolean, context?: any): boolean;
|
||||
collect(iterator: (element: TModel, index: number, context?: any) => any[], context?: any): any[];
|
||||
all(iterator?: _.ListIterator<TModel, boolean>, context?: any): boolean;
|
||||
any(iterator?: _.ListIterator<TModel, boolean>, context?: any): boolean;
|
||||
chain(): any;
|
||||
contains(value: any): boolean;
|
||||
countBy(iterator: (element: TModel, index: number) => any): _.Dictionary<number>;
|
||||
countBy(attribute: string): _.Dictionary<number>;
|
||||
detect(iterator: (item: any) => boolean, context?: any): any; // ???
|
||||
drop(): TModel;
|
||||
drop(n: number): TModel[];
|
||||
each(iterator: (element: TModel, index: number, list?: any) => void, context?: any): any;
|
||||
every(iterator: (element: TModel, index: number) => boolean, context?: any): boolean;
|
||||
filter(iterator: (element: TModel, index: number) => boolean, context?: any): TModel[];
|
||||
find(iterator: (element: TModel, index: number) => boolean, context?: any): TModel;
|
||||
collect<TResult>(iterator: _.ListIterator<TModel, TResult>, context?: any): TResult[];
|
||||
contains(value: TModel): boolean;
|
||||
countBy(iterator?: _.ListIterator<TModel, any>): _.Dictionary<number>;
|
||||
countBy(iterator: string): _.Dictionary<number>;
|
||||
detect(iterator: _.ListIterator<TModel, boolean>, context?: any): TModel;
|
||||
difference(others: TModel[]): TModel[];
|
||||
drop(n?: number): TModel[];
|
||||
each(iterator: _.ListIterator<TModel, void>, context?: any): TModel[];
|
||||
every(iterator: _.ListIterator<TModel, boolean>, context?: any): boolean;
|
||||
filter(iterator: _.ListIterator<TModel, boolean>, context?: any): TModel[];
|
||||
find(iterator: _.ListIterator<TModel, boolean>, context?: any): TModel;
|
||||
findIndex(predicate: _.ListIterator<TModel, boolean>, context?: any): number;
|
||||
findLastIndex(predicate: _.ListIterator<TModel, boolean>, context?: any): number;
|
||||
first(): TModel;
|
||||
first(n: number): TModel[];
|
||||
foldl(iterator: (memo: any, element: TModel, index: number) => any, initialMemo: any, context?: any): any;
|
||||
forEach(iterator: (element: TModel, index: number, list?: any) => void, context?: any): any;
|
||||
groupBy(iterator: (element: TModel, index: number) => string, context?: any): _.Dictionary<TModel[]>;
|
||||
groupBy(attribute: string, context?: any): _.Dictionary<TModel[]>;
|
||||
include(value: any): boolean;
|
||||
indexOf(element: TModel, isSorted?: boolean): number;
|
||||
foldl<TResult>(iterator: _.MemoIterator<TModel, TResult>, memo?: TResult, context?: any): TResult;
|
||||
foldr<TResult>(iterator: _.MemoIterator<TModel, TResult>, memo?: TResult, context?: any): TResult;
|
||||
forEach(iterator: _.ListIterator<TModel, void>, context?: any): TModel[];
|
||||
groupBy(iterator: _.ListIterator<TModel, any>, context?: any): _.Dictionary<TModel[]>;
|
||||
groupBy(iterator: string, context?: any): _.Dictionary<TModel[]>;
|
||||
head(): TModel;
|
||||
head(n: number): TModel[];
|
||||
include(value: TModel): boolean;
|
||||
includes(value: TModel): boolean;
|
||||
indexBy(iterator: _.ListIterator<TModel, any>, context?: any): _.Dictionary<TModel>;
|
||||
indexBy(iterator: string, context?: any): _.Dictionary<TModel>;
|
||||
indexOf(value: TModel, isSorted?: boolean): number;
|
||||
initial(): TModel;
|
||||
initial(n: number): TModel[];
|
||||
inject(iterator: (memo: any, element: TModel, index: number) => any, initialMemo: any, context?: any): any;
|
||||
isEmpty(object: any): boolean;
|
||||
invoke(methodName: string, args?: any[]): any;
|
||||
inject<TResult>(iterator: _.MemoIterator<TModel, TResult>, memo?: TResult, context?: any): TResult;
|
||||
invoke(methodName: string, ...args: any[]): any;
|
||||
isEmpty(): boolean;
|
||||
last(): TModel;
|
||||
last(n: number): TModel[];
|
||||
lastIndexOf(element: TModel, fromIndex?: number): number;
|
||||
map(iterator: (element: TModel, index: number, context?: any) => any, context?: any): any[];
|
||||
max(iterator?: (element: TModel, index: number) => any, context?: any): TModel;
|
||||
min(iterator?: (element: TModel, index: number) => any, context?: any): TModel;
|
||||
reduce(iterator: (memo: any, element: TModel, index: number) => any, initialMemo: any, context?: any): any;
|
||||
select(iterator: any, context?: any): any[];
|
||||
lastIndexOf(value: TModel, from?: number): number;
|
||||
map<TResult>(iterator: _.ListIterator<TModel, TResult>, context?: any): TResult[];
|
||||
max(iterator?: _.ListIterator<TModel, any>, context?: any): TModel;
|
||||
min(iterator?: _.ListIterator<TModel, any>, context?: any): TModel;
|
||||
partition(iterator: _.ListIterator<TModel, boolean>): TModel[][];
|
||||
reduce<TResult>(iterator: _.MemoIterator<TModel, TResult>, memo?: TResult, context?: any): TResult;
|
||||
reduceRight<TResult>(iterator: _.MemoIterator<TModel, TResult>, memo?: TResult, context?: any): TResult;
|
||||
reject(iterator: _.ListIterator<TModel, boolean>, context?: any): TModel[];
|
||||
rest(n?: number): TModel[];
|
||||
sample(): TModel;
|
||||
sample(n: number): TModel[];
|
||||
select(iterator: _.ListIterator<TModel, boolean>, context?: any): TModel[];
|
||||
shuffle(): TModel[];
|
||||
size(): number;
|
||||
shuffle(): any[];
|
||||
slice(min: number, max?: number): TModel[];
|
||||
some(iterator: (element: TModel, index: number) => boolean, context?: any): boolean;
|
||||
sortBy(iterator: (element: TModel, index: number) => number, context?: any): TModel[];
|
||||
sortBy(attribute: string, context?: any): TModel[];
|
||||
sortedIndex(element: TModel, iterator?: (element: TModel, index: number) => number): number;
|
||||
reduceRight(iterator: (memo: any, element: TModel, index: number) => any, initialMemo: any, context?: any): any[];
|
||||
reject(iterator: (element: TModel, index: number) => boolean, context?: any): TModel[];
|
||||
rest(): TModel;
|
||||
rest(n: number): TModel[];
|
||||
tail(): TModel;
|
||||
tail(n: number): TModel[];
|
||||
toArray(): any[];
|
||||
without(...values: any[]): TModel[];
|
||||
some(iterator?: _.ListIterator<TModel, boolean>, context?: any): boolean;
|
||||
sortBy<TSort>(iterator?: _.ListIterator<TModel, TSort>, context?: any): TModel[];
|
||||
sortBy(iterator: string, context?: any): TModel[];
|
||||
tail(n?: number): TModel[];
|
||||
take(): TModel;
|
||||
take(n: number): TModel[];
|
||||
toArray(): TModel[];
|
||||
without(...values: TModel[]): TModel[];
|
||||
}
|
||||
|
||||
class Router extends Events {
|
||||
|
||||
@@ -90,6 +90,25 @@ function test_models() {
|
||||
note.set({ title: "March 20", content: "In his eyes she eclipses..." });
|
||||
|
||||
note.set("title", "A Scandal in Bohemia");
|
||||
|
||||
let strings: string[]
|
||||
let value: any;
|
||||
let values: any[];
|
||||
let bool: boolean;
|
||||
|
||||
// underscore methods
|
||||
strings = note.keys();
|
||||
values = note.values();
|
||||
values = note.pairs();
|
||||
values = note.invert();
|
||||
value = note.pick("foo");
|
||||
value = note.pick("foo", "bar");
|
||||
value = note.pick((value: any, key: any, object: any) => true);
|
||||
value = note.omit("foo");
|
||||
value = note.omit("foo", "bar");
|
||||
value = note.omit((value: any, key: any, object: any) => true);
|
||||
value = note.chain().pick().omit().value();
|
||||
bool = note.isEmpty();
|
||||
}
|
||||
|
||||
class Employee extends Backbone.Model {
|
||||
@@ -161,6 +180,78 @@ function test_collection() {
|
||||
book.get("published") === true);
|
||||
|
||||
var alphabetical = books.sortBy((book: Book): number => null);
|
||||
|
||||
let one: Book;
|
||||
let models: Book[];
|
||||
let bool: boolean;
|
||||
let numDict: _.Dictionary<number>;
|
||||
let modelDict: _.Dictionary<Book>;
|
||||
let modelsDict: _.Dictionary<Book[]>;
|
||||
let num: number;
|
||||
|
||||
models = books.slice(1);
|
||||
models = books.slice(1, 3);
|
||||
|
||||
// underscore methods
|
||||
bool = books.all((value: Book, index: number, list: Book[]) => true);
|
||||
bool = books.any((value: Book, index: number, list: Book[]) => true);
|
||||
bool = books.chain().any((value: Book, index: number, list: Book[]) => true).value();
|
||||
models = books.collect((value: Book, index: number, list: Book[]) => value);
|
||||
bool = books.contains(book1);
|
||||
numDict = books.countBy((value: Book, index: number, list: Book[]) => true);
|
||||
numDict = books.countBy("foo");
|
||||
one = books.detect((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.difference([book1]);
|
||||
models = books.drop();
|
||||
models = books.each((value: Book, index: number, list: Book[]) => true);
|
||||
bool = books.every((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.filter((value: Book, index: number, list: Book[]) => true);
|
||||
one = books.find((value: Book, index: number, list: Book[]) => true);
|
||||
num = books.findIndex((value: Book, index: number, list: Book[]) => true);
|
||||
num = books.findLastIndex((value: Book, index: number, list: Book[]) => true);
|
||||
one = books.first();
|
||||
models = books.first(3);
|
||||
models = books.foldl((prev: Book[], curr: Book, index: number, list: Book[]) => prev, []);
|
||||
models = books.foldr((prev: Book[], curr: Book, index: number, list: Book[]) => prev, []);
|
||||
models = books.forEach((value: Book, index: number, list: Book[]) => true);
|
||||
modelsDict = books.groupBy((value: Book, index: number, list: Book[]) => true);
|
||||
modelsDict = books.groupBy("foo");
|
||||
one = books.head();
|
||||
models = books.head(3);
|
||||
bool = books.include(book1);
|
||||
bool = books.includes(book1);
|
||||
modelDict = books.indexBy((value: Book, index: number, list: Book[]) => true);
|
||||
modelDict = books.indexBy("foo");
|
||||
num = books.indexOf(book1, true);
|
||||
one = books.initial();
|
||||
models = books.initial(3);
|
||||
models = books.inject((prev: Book[], curr: Book, index: number, list: Book[]) => prev, []);
|
||||
one = books.invoke("at", 3);
|
||||
bool = books.isEmpty();
|
||||
one = books.last();
|
||||
models = books.last(3);
|
||||
num = books.lastIndexOf(book1, 3);
|
||||
models = books.map((value: Book, index: number, list: Book[]) => value);
|
||||
one = books.max((value: Book, index: number, list: Book[]) => value);
|
||||
one = books.min((value: Book, index: number, list: Book[]) => value);
|
||||
[models] = books.partition((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.reduce((prev: Book[], curr: Book, index: number, list: Book[]) => prev, []);
|
||||
models = books.reduceRight((prev: Book[], curr: Book, index: number, list: Book[]) => prev, []);
|
||||
models = books.reject((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.rest(3);
|
||||
one = books.sample();
|
||||
models = books.sample(3);
|
||||
models = books.select((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.shuffle();
|
||||
num = books.size();
|
||||
bool = books.some((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.sortBy((value: Book, index: number, list: Book[]) => value);
|
||||
models = books.sortBy("foo");
|
||||
models = books.tail(3);
|
||||
one = books.take();
|
||||
models = books.take(3);
|
||||
models = books.toArray();
|
||||
models = books.without(book1, book1);
|
||||
}
|
||||
|
||||
//////////
|
||||
|
||||
@@ -91,6 +91,25 @@ function test_models() {
|
||||
note.set({ title: "March 20", content: "In his eyes she eclipses..." });
|
||||
|
||||
note.set("title", "A Scandal in Bohemia");
|
||||
|
||||
let strings: string[]
|
||||
let value: any;
|
||||
let values: any[];
|
||||
let bool: boolean;
|
||||
|
||||
// underscore methods
|
||||
strings = note.keys();
|
||||
values = note.values();
|
||||
values = note.pairs();
|
||||
values = note.invert();
|
||||
value = note.pick("foo");
|
||||
value = note.pick("foo", "bar");
|
||||
value = note.pick((value: any, key: any, object: any) => true);
|
||||
value = note.omit("foo");
|
||||
value = note.omit("foo", "bar");
|
||||
value = note.omit((value: any, key: any, object: any) => true);
|
||||
value = note.chain().pick().omit().value();
|
||||
bool = note.isEmpty();
|
||||
}
|
||||
|
||||
class Employee extends Backbone.Model {
|
||||
@@ -152,6 +171,78 @@ function test_collection() {
|
||||
book.get("published") === true);
|
||||
|
||||
var alphabetical = books.sortBy((book: Book): number => null);
|
||||
|
||||
let one: Book;
|
||||
let models: Book[];
|
||||
let bool: boolean;
|
||||
let numDict: _.Dictionary<number>;
|
||||
let modelDict: _.Dictionary<Book>;
|
||||
let modelsDict: _.Dictionary<Book[]>;
|
||||
let num: number;
|
||||
|
||||
models = books.slice(1);
|
||||
models = books.slice(1, 3);
|
||||
|
||||
// underscore methods
|
||||
bool = books.all((value: Book, index: number, list: Book[]) => true);
|
||||
bool = books.any((value: Book, index: number, list: Book[]) => true);
|
||||
bool = books.chain().any((value: Book, index: number, list: Book[]) => true).value();
|
||||
models = books.collect((value: Book, index: number, list: Book[]) => value);
|
||||
bool = books.contains(book1);
|
||||
numDict = books.countBy((value: Book, index: number, list: Book[]) => true);
|
||||
numDict = books.countBy("foo");
|
||||
one = books.detect((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.difference([book1]);
|
||||
models = books.drop();
|
||||
models = books.each((value: Book, index: number, list: Book[]) => true);
|
||||
bool = books.every((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.filter((value: Book, index: number, list: Book[]) => true);
|
||||
one = books.find((value: Book, index: number, list: Book[]) => true);
|
||||
num = books.findIndex((value: Book, index: number, list: Book[]) => true);
|
||||
num = books.findLastIndex((value: Book, index: number, list: Book[]) => true);
|
||||
one = books.first();
|
||||
models = books.first(3);
|
||||
models = books.foldl((prev: Book[], curr: Book, index: number, list: Book[]) => prev, []);
|
||||
models = books.foldr((prev: Book[], curr: Book, index: number, list: Book[]) => prev, []);
|
||||
models = books.forEach((value: Book, index: number, list: Book[]) => true);
|
||||
modelsDict = books.groupBy((value: Book, index: number, list: Book[]) => true);
|
||||
modelsDict = books.groupBy("foo");
|
||||
one = books.head();
|
||||
models = books.head(3);
|
||||
bool = books.include(book1);
|
||||
bool = books.includes(book1);
|
||||
modelDict = books.indexBy((value: Book, index: number, list: Book[]) => true);
|
||||
modelDict = books.indexBy("foo");
|
||||
num = books.indexOf(book1, true);
|
||||
one = books.initial();
|
||||
models = books.initial(3);
|
||||
models = books.inject((prev: Book[], curr: Book, index: number, list: Book[]) => prev, []);
|
||||
one = books.invoke("at", 3);
|
||||
bool = books.isEmpty();
|
||||
one = books.last();
|
||||
models = books.last(3);
|
||||
num = books.lastIndexOf(book1, 3);
|
||||
models = books.map((value: Book, index: number, list: Book[]) => value);
|
||||
one = books.max((value: Book, index: number, list: Book[]) => value);
|
||||
one = books.min((value: Book, index: number, list: Book[]) => value);
|
||||
[models] = books.partition((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.reduce((prev: Book[], curr: Book, index: number, list: Book[]) => prev, []);
|
||||
models = books.reduceRight((prev: Book[], curr: Book, index: number, list: Book[]) => prev, []);
|
||||
models = books.reject((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.rest(3);
|
||||
one = books.sample();
|
||||
models = books.sample(3);
|
||||
models = books.select((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.shuffle();
|
||||
num = books.size();
|
||||
bool = books.some((value: Book, index: number, list: Book[]) => true);
|
||||
models = books.sortBy((value: Book, index: number, list: Book[]) => value);
|
||||
models = books.sortBy("foo");
|
||||
models = books.tail(3);
|
||||
one = books.take();
|
||||
models = books.take(3);
|
||||
models = books.toArray();
|
||||
models = books.without(book1, book1);
|
||||
}
|
||||
|
||||
//////////
|
||||
|
||||
Reference in New Issue
Block a user