From 4b4d78850ffd79967d5988b54ea0727f4cb399ec Mon Sep 17 00:00:00 2001 From: "EWOUT-QMINO\\Ewout" Date: Wed, 8 Oct 2014 10:29:07 +0200 Subject: [PATCH] Refactored the properties of KnockoutObservable into a seperate interface. This way KnockoutObservableArray doesn't extend KnockoutObservable anymore, making it possible to override methods according to the knockoutjs syntax (including Array Change subscription support). --- knockout/knockout.d.ts | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/knockout/knockout.d.ts b/knockout/knockout.d.ts index 3c452dede..703f2b48c 100644 --- a/knockout/knockout.d.ts +++ b/knockout/knockout.d.ts @@ -53,7 +53,7 @@ interface KnockoutSubscription { } interface KnockoutSubscribable extends KnockoutSubscribableFunctions { - subscribe(callback: (object: 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; @@ -83,7 +83,25 @@ interface KnockoutObservableArrayStatic { (value?: T[]): KnockoutObservableArray; } -interface KnockoutObservableArray extends KnockoutObservable, KnockoutObservableArrayFunctions { +interface KnockoutObservableProperties{ + (): T; + (value: T): void; + + peek(): T; + valueHasMutated?:{(): void;}; + valueWillMutate?:{(): void;}; +} + +interface KnockoutObservableArray extends KnockoutSubscribable, KnockoutObservableProperties,KnockoutObservableArrayFunctions { + 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; + + subscribe(callback: (changes : KnockoutArrayChange[]) => void, target: any, event: string): KnockoutSubscription; + subscribe(callback: (changes : KnockoutArrayChange[]) => void, target: any, event: 'arrayChange'): KnockoutSubscription; + extend(requestedExtenders: { [key: string]: any; }): KnockoutObservableArray; } @@ -93,14 +111,8 @@ interface KnockoutObservableStatic { (value?: T): KnockoutObservable; } -interface KnockoutObservable extends KnockoutSubscribable, KnockoutObservableFunctions { - (): T; - (value: T): void; - - peek(): T; - valueHasMutated?:{(): void;}; - valueWillMutate?:{(): void;}; - +interface KnockoutObservable extends KnockoutSubscribable, KnockoutObservableProperties, KnockoutObservableFunctions { + subscribe(callback: (newValue : T) => void, target?: any, event?: string): KnockoutSubscription; extend(requestedExtenders: { [key: string]: any; }): KnockoutObservable; }