From b26095e9fac0af54fe1d56a42b83dffb928a4a77 Mon Sep 17 00:00:00 2001 From: Thomas Butler Date: Fri, 6 Dec 2013 06:10:12 -0500 Subject: [PATCH] Fixed KnockoutComputed polymorphism Changed KnockoutComputed to inherit KnockoutObservable to enable polymorphic/covariant reference conversion (see included unit test for example). --- knockout/knockout.d.ts | 11 ++++------- knockout/tests/knockout-tests.ts | 13 +++++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/knockout/knockout.d.ts b/knockout/knockout.d.ts index aa6044e9f..b41846ca5 100644 --- a/knockout/knockout.d.ts +++ b/knockout/knockout.d.ts @@ -68,11 +68,8 @@ interface KnockoutComputedStatic { (options?: any): KnockoutComputed; } -interface KnockoutComputed extends KnockoutSubscribable, KnockoutComputedFunctions { - (): T; - (value: T): void; - - peek(): T; +interface KnockoutComputed extends KnockoutObservable, KnockoutComputedFunctions { + dispose(): void; isActive(): boolean; getDependenciesCount(): number; @@ -100,8 +97,8 @@ interface KnockoutObservable extends KnockoutSubscribable, KnockoutObserva (value: T): void; peek(): T; - valueHasMutated(): void; - valueWillMutate(): void; + valueHasMutated?:{(): void;}; + valueWillMutate?:{(): void;}; extend(requestedExtenders: { [key: string]: any; }): KnockoutObservable; } diff --git a/knockout/tests/knockout-tests.ts b/knockout/tests/knockout-tests.ts index b0755c12a..fb3955241 100644 --- a/knockout/tests/knockout-tests.ts +++ b/knockout/tests/knockout-tests.ts @@ -570,4 +570,17 @@ function test_misc() { ko.utils.domNodeDisposal.addDisposeCallback(element, function () { $(element).datepicker("destroy"); }); + + this.observableFactory = function(): KnockoutObservable{ + if (true) { + return ko.computed({ + read:function(){ + return 3; + } + }); + } else { + return ko.observable(3); + } + } + } \ No newline at end of file