Add more overloads of knockout-transformations map

Not yet documented (see One-com/knockout-transformations#5), derived by
studying the code
(https://github.com/One-com/knockout-transformations/blob/master/lib/map.js)
This commit is contained in:
Wim Looman 2015-03-05 11:28:00 +13:00
parent fe39944e4d
commit ea43bdc3d3
2 changed files with 63 additions and 1 deletions

View File

@ -161,3 +161,46 @@ var indexedTexts: KnockoutObservable<{ [suffixOrPrefix: string]: string[] }> = t
// z: ['baz'],
// x: ['qux', 'quux']
// }
(() => {
var sourceItems: KnockoutObservableArray<number> = ko.observableArray([1, 2, 3, 4, 5]);
var asString: KnockoutObservableArray<string>;
asString = sourceItems.map((x: number) => x.toString());
asString = sourceItems.map<string>({
mapping: (x: number) => x.toString(),
});
asString = sourceItems.map<string>({
mapping: (x: number) => x.toString(),
disposeItem: (x: string) => console.log('disposing map to', x),
});
asString = sourceItems.map<string>({
mappingWithDisposeCallback: (x: number) => ({
mappedValue: x.toString(),
dispose: () => console.log('disposing map from', x),
}),
});
asString = sourceItems.map(x => x.toString());
asString = sourceItems.map({
mapping: x => x.toString(),
});
asString = sourceItems.map<string>({
mapping: x => x.toString(),
disposeItem: x => console.log('disposing map to', x),
});
asString = sourceItems.map({
mappingWithDisposeCallback: x => ({
mappedValue: x.toString(),
dispose: () => console.log('disposing map from', x),
}),
});
});

View File

@ -5,8 +5,27 @@
/// <reference path="../knockout/knockout.d.ts" />
declare module KnockoutTransformations {
interface Mapping<T, TResult> {
(value: T): TResult;
}
interface MappingOption<T, TResult> {
mapping: Mapping<T, TResult>;
disposeItem?: (item: TResult) => void;
}
interface MappingWithDisposeCallbackOption<T, TResult> {
mappingWithDisposeCallback: (value: T) => {
mappedValue: TResult;
dispose: () => void;
};
}
}
interface KnockoutObservableArrayFunctions<T> {
map<TResult>(mapping: (value: T) => TResult): KnockoutObservableArray<TResult>;
map<TResult>(mapping: KnockoutTransformations.Mapping<T, TResult>): KnockoutObservableArray<TResult>;
map<TResult>(mapping: KnockoutTransformations.MappingOption<T, TResult>): KnockoutObservableArray<TResult>;
map<TResult>(mapping: KnockoutTransformations.MappingWithDisposeCallbackOption<T, TResult>): KnockoutObservableArray<TResult>;
filter(predicate: (value: T) => boolean): KnockoutObservableArray<T>;
sortBy(sorter: (value: T, descending: (sorter: any) => any) => any): KnockoutObservableArray<T>;
indexBy(indexer: (value: T) => string): KnockoutObservable<{ [index: string]: T[] }>;