Merge pull request #3790 from Nemo157/knockout-transformations-map-methods

Add more overloads of knockout-transformations map
This commit is contained in:
Masahiro Wakame
2015-03-05 22:28:39 +09:00
2 changed files with 63 additions and 1 deletions
@@ -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),
}),
});
});
+20 -1
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[] }>;