diff --git a/knockout/knockout.d.ts b/knockout/knockout.d.ts
index 8fc87e98d4..32c278062f 100644
--- a/knockout/knockout.d.ts
+++ b/knockout/knockout.d.ts
@@ -1,4 +1,4 @@
-// Type definitions for Knockout v3.2.0-beta
+// Type definitions for Knockout v3.2.0
// Project: http://knockoutjs.com
// Definitions by: Boris Yankov , Igor Oleinikov
// Definitions: https://github.com/borisyankov/DefinitelyTyped
@@ -53,12 +53,33 @@ interface KnockoutSubscription {
}
interface KnockoutSubscribable extends KnockoutSubscribableFunctions {
- subscribe(callback: (newValue: T) => void, target?: any, event?: string): KnockoutSubscription;
+ subscribe(callback: (param : any) => void, target?: any, event?: string): KnockoutSubscription;
+ subscribe(callback: (param : any) => void, target: any, event: string): KnockoutSubscription;
subscribe(callback: (newValue: TEvent) => void, target: any, event: string): KnockoutSubscription;
extend(requestedExtenders: { [key: string]: any; }): KnockoutSubscribable;
getSubscriptionsCount(): number;
}
+interface KnockoutObservableProperties{
+ (): T;
+ (value: T): void;
+
+ peek(): T;
+ valueHasMutated?:{(): void;};
+ valueWillMutate?:{(): void;};
+}
+
+interface KnockoutObservableStatic {
+ fn: KnockoutObservableFunctions;
+
+ (value?: T): KnockoutObservable;
+}
+
+interface KnockoutObservable extends KnockoutSubscribable, KnockoutObservableProperties, KnockoutObservableFunctions {
+ subscribe(callback: (newValue : T) => void, target?: any, event?: string): KnockoutSubscription;
+ extend(requestedExtenders: { [key: string]: any; }): KnockoutObservable;
+}
+
interface KnockoutComputedStatic {
fn: KnockoutComputedFunctions;
@@ -83,26 +104,18 @@ interface KnockoutObservableArrayStatic {
(value?: T[]): KnockoutObservableArray;
}
-interface KnockoutObservableArray extends KnockoutObservable, KnockoutObservableArrayFunctions {
+interface KnockoutObservableArray extends KnockoutSubscribable, KnockoutObservableProperties,KnockoutObservableArrayFunctions {
+ subscribe(callback: (changes : KnockoutArrayChange[]) => void, target: any, event: string): KnockoutSubscription;
+ subscribe(callback: (changes : KnockoutArrayChange[]) => void, target: any, event: 'arrayChange'): KnockoutSubscription;
+
+ subscribe(callback: (param : T[]) => void, target?: any, event?: string): KnockoutSubscription;
+ subscribe(callback: (param : T[]) => void, target: any, event: string): KnockoutSubscription;
+ subscribe(callback: (param : T[]) => void, target: any, event: 'change'): KnockoutSubscription;
+ subscribe(callback: (param : T[]) => void, target: any, event: 'beforeChange'): KnockoutSubscription;
+
extend(requestedExtenders: { [key: string]: any; }): KnockoutObservableArray;
}
-interface KnockoutObservableStatic {
- fn: KnockoutObservableFunctions;
-
- (value?: T): KnockoutObservable;
-}
-
-interface KnockoutObservable extends KnockoutSubscribable, KnockoutObservableFunctions {
- (): T;
- (value: T): void;
-
- peek(): T;
- valueHasMutated?:{(): void;};
- valueWillMutate?:{(): void;};
- extend(requestedExtenders: { [key: string]: any; }): KnockoutObservable;
-}
-
interface KnockoutComputedDefine {
read(): T;
write? (value: T): void;
diff --git a/knockout/tests/knockout-tests.ts b/knockout/tests/knockout-tests.ts
index 82b5aa25c0..ea1e332e0a 100644
--- a/knockout/tests/knockout-tests.ts
+++ b/knockout/tests/knockout-tests.ts
@@ -108,6 +108,27 @@ function testGetter() {
function test_observableArrays() {
var myObservableArray = ko.observableArray();
+
+ myObservableArray.subscribe(function(changes){
+ for(var i = 0; i < changes.length; i++){
+ console.log(changes[i].index);
+ console.log(changes[i].status);
+ console.log(changes[i].value);
+ }
+ }, null, "arrayChange");
+
+ myObservableArray.subscribe(function(newValue){
+ console.log(newValue);
+ }, null, "change");
+
+ myObservableArray.subscribe(function(oldValue){
+ console.log(oldValue);
+ }, null, "beforeChange");
+
+ myObservableArray.subscribe(function(newValue){
+ console.log(newValue);
+ });
+
myObservableArray.push('Some value');
var anotherObservableArray = ko.observableArray([
{ name: "Bungle", type: "Bear" },