diff --git a/knockout.projections/knockout.projections-tests.ts b/knockout.projections/knockout.projections-tests.ts
index d8d6c8dcd..138d36946 100644
--- a/knockout.projections/knockout.projections-tests.ts
+++ b/knockout.projections/knockout.projections-tests.ts
@@ -54,3 +54,11 @@ var complexItems2 = sourceItems.map({
};
}
});
+
+// Test disposal
+
+evenSquares.dispose();
+
+complexItems.dispose();
+
+complexItems2.dispose();
diff --git a/knockout.projections/knockout.projections.d.ts b/knockout.projections/knockout.projections.d.ts
index a9ff8b5f3..e1443478a 100644
--- a/knockout.projections/knockout.projections.d.ts
+++ b/knockout.projections/knockout.projections.d.ts
@@ -5,18 +5,21 @@
///
+interface KnockoutMappedObservableArray extends KnockoutObservableArray, KnockoutSubscription {
+}
+
interface KnockoutObservableArrayFunctions {
map(mappingOptions: {
mappingWithDisposeCallback: (value: T) => {
mappedValue: TResult;
dispose: () => void;
};
- }): KnockoutObservableArray;
+ }): KnockoutMappedObservableArray;
map(mappingOptions: {
mapping: (value: T) => TResult;
disposeItem?: (mappedItem: TResult) => void;
- }): KnockoutObservableArray;
- map(mappingOptions: (value: T) => TResult): KnockoutObservableArray;
+ }): KnockoutMappedObservableArray;
+ map(mappingOptions: (value: T) => TResult): KnockoutMappedObservableArray;
- filter(predicate: (value: T) => boolean): KnockoutObservableArray;
+ filter(predicate: (value: T) => boolean): KnockoutMappedObservableArray;
}