Make map and filter return type with a dispose method

Defined a KnockoutMappedObservableArray type which extends
KnockoutSubscription, providing a dispose() method since the mapped arrays
require disposal for proper cleanup.
This commit is contained in:
Thomas Michon
2015-03-30 19:33:07 -07:00
parent c124eaac95
commit 697223d3e6
2 changed files with 15 additions and 4 deletions
@@ -54,3 +54,11 @@ var complexItems2 = sourceItems.map({
};
}
});
// Test disposal
evenSquares.dispose();
complexItems.dispose();
complexItems2.dispose();
+7 -4
View File
@@ -5,18 +5,21 @@
/// <reference path="../knockout/knockout.d.ts" />
interface KnockoutMappedObservableArray<T> extends KnockoutObservableArray<T>, KnockoutSubscription {
}
interface KnockoutObservableArrayFunctions<T> {
map<TResult>(mappingOptions: {
mappingWithDisposeCallback: (value: T) => {
mappedValue: TResult;
dispose: () => void;
};
}): KnockoutObservableArray<TResult>;
}): KnockoutMappedObservableArray<TResult>;
map<TResult>(mappingOptions: {
mapping: (value: T) => TResult;
disposeItem?: (mappedItem: TResult) => void;
}): KnockoutObservableArray<TResult>;
map<TResult>(mappingOptions: (value: T) => TResult): KnockoutObservableArray<TResult>;
}): KnockoutMappedObservableArray<TResult>;
map<TResult>(mappingOptions: (value: T) => TResult): KnockoutMappedObservableArray<TResult>;
filter(predicate: (value: T) => boolean): KnockoutObservableArray<T>;
filter(predicate: (value: T) => boolean): KnockoutMappedObservableArray<T>;
}