diff --git a/knockout/knockout.d.ts b/knockout/knockout.d.ts index 8fc87e98d4..a8b2af0176 100644 --- a/knockout/knockout.d.ts +++ b/knockout/knockout.d.ts @@ -53,7 +53,7 @@ interface KnockoutSubscription { } interface KnockoutSubscribable extends KnockoutSubscribableFunctions { - subscribe(callback: (newValue: T) => void, target?: any, event?: string): KnockoutSubscription; + subscribe(callback: (object: Object) => void, target?: any, event?: string): KnockoutSubscription; subscribe(callback: (newValue: TEvent) => void, target: any, event: string): KnockoutSubscription; extend(requestedExtenders: { [key: string]: any; }): KnockoutSubscribable; getSubscriptionsCount(): number; @@ -84,6 +84,8 @@ interface KnockoutObservableArrayStatic { } interface KnockoutObservableArray extends KnockoutObservable, KnockoutObservableArrayFunctions { + subscribe(callback: (newValue: T[]) => void, target?: any, event?: string): KnockoutSubscription; + subscribe(callback: (changes: KnockoutArrayChange[]) => void, target?: any, event?: string): KnockoutSubscription; extend(requestedExtenders: { [key: string]: any; }): KnockoutObservableArray; } @@ -100,6 +102,8 @@ interface KnockoutObservable extends KnockoutSubscribable, KnockoutObserva peek(): T; valueHasMutated?:{(): void;}; valueWillMutate?:{(): void;}; + + subscribe(callback: (newValue: T) => void, target?: any, event?: string): KnockoutSubscription; extend(requestedExtenders: { [key: string]: any; }): KnockoutObservable; } diff --git a/knockout/tests/knockout-tests.ts b/knockout/tests/knockout-tests.ts index 82b5aa25c0..d3cf4ee848 100644 --- a/knockout/tests/knockout-tests.ts +++ b/knockout/tests/knockout-tests.ts @@ -108,6 +108,15 @@ 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.push('Some value'); var anotherObservableArray = ko.observableArray([ { name: "Bungle", type: "Bear" },