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" },