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.

İlgili makaleler