What is the proper way to initialize a Knockout observableArray in a TypeScript class?
I am doing something like this:
module ViewModel {
de
I just did this in TypeScript 1.3 (though it should work in older versions too):
pendingAddAssociations: KnockoutObservableArray<ControllerModel> = ko.observableArray<ControllerModel>([]);
for your example, if you have an Agency class.
export class IndexPageViewModel {
agencies: KnockoutObservableArray<Agency>;
constructor () {
this.agencies = ko.observableArray<Agency>([]);
}
}
I've also found that you can cast to any this.agencies = <any>[];
This is useful if you are using the Knockout ES5 plugin.
This line is where your mistake is:
agencies[i]
When you access an observable array, it is actually wrapped in a function so you do access it like:
agencies()[i]
Also make yourself a favor and download the Knockout definitions from: https://github.com/borisyankov/DefinitelyTyped
Then declare your attributes with types:
module ViewModel {
export class IndexPageViewModel {
agencies: KnockoutObservableArray;
constructor () {
this.agencies = ko.observableArray([]);
}
}
}