javascript - TypeScript kullanarak KnockoutJS'te Nesneler Dizisi için Doğru Açıklama
DefiantelyTyped türlerinin tanımları Generics ile TypeScript kullanacak şekilde güncellendiğinden, tanımda uygun tür ne olurdu (çünkü artık sadece T'nin ObservableArray'i gerekli):
class Some {
name: KnockoutObservable<string> = ko.observable("Some name"),
arrayOfValues: KnockoutObservableArray< (of Object??? ) > ???? ;
constructor () {
arrayOfValues.push( {key: "value"} );
...
Cevap #1
Bunun için TypeScript'in tip çıkarımını kullanabilirsiniz, aksi takdirde oldukça tekrarlayan uzun bir kod satırıyla karşılaşırsınız:
var examples = ko.observableArray<Example>();
examples.push(new Example('Test'));
examples.push('Type warning'); // not an 'Example'
Bu örnekte, ko.observableArray'yi oluşturduğunuzda tür argümanını geçersiniz. TypeScript, var examples'ın türünün KnockoutObservableArray<Example> olduğunu çıkarır ve tüm çağrılarınızı kontrol eder.
Bunu bağlama oturtmak için, işte örneğinizle birlikte kod:
interface YourType {
key: string;
}
class Some {
name = ko.observable<string>("Some name");
arrayOfValues = ko.observableArray<YourType>();
constructor () {
this.arrayOfValues.push( {key: "value"} );
...
Cevap #2
KnockoutObservableArray<any>
veya tipiniz için bir arayüz tanımlayın.
