From 3039e58e381c375b9c53fafe21902736846f88d4 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sun, 27 Oct 2013 21:44:37 +0400 Subject: [PATCH 1/3] Fixed inheritance and function definitions in Kockout - fixed inheritance - fixed fn definitions - *Functions interfaces made generic to allow generic extensions - added more options in KnockoutComputedDefintion --- knockout/knockout.d.ts | 83 +++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 46 deletions(-) diff --git a/knockout/knockout.d.ts b/knockout/knockout.d.ts index 08f7bc88b1..63f9938943 100644 --- a/knockout/knockout.d.ts +++ b/knockout/knockout.d.ts @@ -4,25 +4,18 @@ // Definitions: https://github.com/borisyankov/DefinitelyTyped -interface KnockoutSubscribableFunctions { - extend(source); - dispose(): void; - peek(): any; - valueHasMutated(): void; - - valueWillMutate(): void; +interface KnockoutSubscribableFunctions { + notifySubscribers(valueToWrite: T, event?: string); } -interface KnockoutComputedFunctions extends KnockoutSubscribableFunctions { - getDependenciesCount(): number; - getSubscriptionsCount(): number; - hasWriteFunction(): boolean; +interface KnockoutComputedFunctions { } -interface KnockoutObservableFunctions extends KnockoutSubscribableFunctions { +interface KnockoutObservableFunctions { + equalityComparer(a: any, b: any): boolean; } -interface KnockoutObservableArrayFunctions extends KnockoutObservableFunctions { +interface KnockoutObservableArrayFunctions { // General Array functions indexOf(searchElement: T, fromIndex?: number): number; slice(start: number, end?: number): T[]; @@ -49,18 +42,26 @@ interface KnockoutObservableArrayFunctions extends KnockoutObservableFunction } interface KnockoutSubscribableStatic { - fn: KnockoutSubscribableFunctions; + fn: KnockoutSubscribableFunctions; - new (): KnockoutSubscription; + new (): KnockoutSubscribable; } -interface KnockoutSubscription extends KnockoutSubscribableFunctions { - subscribe(callback: (newValue: any) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite, topic?: string); +interface KnockoutSubscription { + dispose(): void; +} + +interface KnockoutSubscribable extends KnockoutSubscribableFunctions { + (): T; + (value: T): void; + + subscribe(callback: (newValue: T) => void, target?: any, event?: string): KnockoutSubscription; + extend(requestedExtenders: { [key: string]: any; }): KnockoutSubscribable; + getSubscriptionsCount(): number; } interface KnockoutComputedStatic { - fn: KnockoutComputedFunctions; + fn: KnockoutComputedFunctions; (): KnockoutComputed; (func: () => T, context?: any, options?: any): KnockoutComputed; @@ -68,51 +69,41 @@ interface KnockoutComputedStatic { (options?: any): KnockoutComputed; } -interface KnockoutComputed extends KnockoutComputedFunctions { - (): T; - (value: T): void; - - subscribe(callback: (newValue: T) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite: T, topic?: string); +interface KnockoutComputed extends KnockoutSubscribable, KnockoutComputedFunctions { + peek(): T; + dispose(): void; + isActive(): boolean; + getDependenciesCount(): number; } interface KnockoutObservableArrayStatic { - fn: KnockoutObservableArrayFunctions; (value?: T[]): KnockoutObservableArray; } -interface KnockoutObservableArray extends KnockoutObservableArrayFunctions { - (): T[]; - (value: T[]): void; - - subscribe(callback: (newValue: T[]) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite: T[], topic?: string); +interface KnockoutObservableArray extends KnockoutObservable, KnockoutObservableArrayFunctions { } interface KnockoutObservableStatic { - fn: KnockoutObservableFunctions; + fn: KnockoutObservableFunctions; (value?: T): KnockoutObservable; } -/** use as method to get/set the value */ -interface KnockoutObservableBase extends KnockoutObservableFunctions { - getSubscriptionsCount(): number; -} - -interface KnockoutObservable extends KnockoutObservableBase { - (): T; - (value: T): void; - - subscribe(callback: (newValue: T) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite: T, topic?: string); +interface KnockoutObservable extends KnockoutSubscribable, KnockoutObservableFunctions { + peek(): T; + valueHasMutated(): void; + valueWillMutate(): void; } interface KnockoutComputedDefine { - read(): T; - write(T); + read(): T; + write? (value: T): void; + disposeWhenNodeIsRemoved?: Node; + disposeWhen? (): boolean; + owner?: any; + deferEvaluation?: boolean; } interface KnockoutBindingContext { From 5a2c16ed29490fdca2429216d590fab1aec36e56 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sun, 27 Oct 2013 22:06:54 +0400 Subject: [PATCH 2/3] Changed definitions in knockout.validation related to previous changes in kockout KnockoutObservableBase replaced by KnockoutObservable --- knockout.validation/knockout.validation.d.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/knockout.validation/knockout.validation.d.ts b/knockout.validation/knockout.validation.d.ts index 725902e60f..2e00c5223d 100644 --- a/knockout.validation/knockout.validation.d.ts +++ b/knockout.validation/knockout.validation.d.ts @@ -117,10 +117,10 @@ interface KnockoutValidationStatic { addRule(observable: KnockoutObservable, rule: KnockoutValidationRule): KnockoutObservable; - addAnonymousRule(observable: KnockoutObservableBase, ruleObj: KnockoutValidationAnonymousRuleDefinition): void; + addAnonymousRule(observable: KnockoutObservable, ruleObj: KnockoutValidationAnonymousRuleDefinition): void; insertValidationMessage(element: Element): Element; - parseInputValidationAttributes(element: Element, valueAccessor: () => KnockoutObservableBase): void; + parseInputValidationAttributes(element: Element, valueAccessor: () => KnockoutObservable): void; rules: KnockoutValidationRuleDefinitions; @@ -129,12 +129,12 @@ interface KnockoutValidationStatic { utils: KnockoutValidationUtils; localize(msgTranslations: any): void; - validateObservable(observable: KnockoutObservableBase): boolean; + validateObservable(observable: KnockoutObservable): boolean; } interface KnockoutStatic { validation: KnockoutValidationStatic; - validatedObservable(initialValue: any): KnockoutObservableBase; + validatedObservable(initialValue: any): KnockoutObservable; applyBindingsWithValidation(viewModel: any, rootNode?: any, options?: KnockoutValidationConfiguration): void; } From d0c36de348daaee3f6f838f2f44ec7a894b8db06 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sun, 27 Oct 2013 23:22:03 +0400 Subject: [PATCH 3/3] Changed definitions in knockout.deferred.updates related to previous changes in knockout deferUpdates define in KnockoutSubscription --- knockout.deferred.updates/knockout.deferred.updates.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knockout.deferred.updates/knockout.deferred.updates.d.ts b/knockout.deferred.updates/knockout.deferred.updates.d.ts index 7822c7d95b..1371f3263e 100644 --- a/knockout.deferred.updates/knockout.deferred.updates.d.ts +++ b/knockout.deferred.updates/knockout.deferred.updates.d.ts @@ -30,7 +30,7 @@ interface KnockoutComputedStatic { deferUpdates: boolean; } -interface KnockoutComputedFunctions { +interface KnockoutSubscription { deferUpdates: boolean; }