@nabog, you are right.
I hadn't spotted that initialising a variable using the static empty constructor, eg. ko.observable<string>(), was picking the wrong overload from KnockoutObservableStatic.
The KnockoutObservableStatic interface was there to provide access to the ".fn" prototype extension point. As I don't use it in my code, I have updated my definitions file at
to define the static ko.observable directly.
observable<T>( value?: T ): KnockoutObservable;
observableArray<T>( value?: T ): KnockoutObservableArray;
Hopefully that will help the behaviour for you, but if you need access to the ".fn" extension point that would no longer work I guess. I don't know if there is a better way of defining the interface that would work.