2016-01-12 24 views
26

İyi günler. VSCode kullanarak Yazım Komutu için yeni.'X' türünde argüman 'X' türünde parametre atanamaz '

alınıyor aşağıdaki hataları:

  1. hata TS2322: Tür '() => string' 'dizesini' yazmanız atanabilir değil.

  2. hata TS2322: Tür '() => sayı' 'numara' yazın atanabilir değil.

Kodu:

DTO.ts

interface DTO { 

    getId(): number; 
    getValue(): string; 
} 
export = DTO; 

LinkedObject.ts

class LinkedObject { 

    public value: string = "Not Set"; 
    public id: number = 0; 

    constructor(value?: string, id?: number) { 
     this.value = value; 
     this.id = id; 
    } 
} 
export = LinkedObject; 

Ben 01 örneğini çalışıyorum bahsedilen arayüz yöntem yukarıda kullanılaraksınıfı:

TravelClientFormPopulator.ts

class TravelClientFormPopulator { 

    public populateComboBoxUsingDTOs(dataObjects: Array<DTO>, comboBoxID: string): void { 

     // Get the combo box 
     var selectElement = <HTMLSelectElement> document.getElementById(comboBoxID); 
     // Reset the options 
     selectElement.options.length = 0; 

     var linkedObjectsToAdd: LinkedObject[] = new Array<LinkedObject>(); 

     var defaultLinkedObject: LinkedObject = new LinkedObject("Not Selected", 0); 

     linkedObjectsToAdd.push(defaultLinkedObject); 

     for (var i = 0; i < dataObjects.length; i++) { 
      var value: string = dataObjects[i].getValue; // Error here 
      var id: number = dataObjects[i].getId; // And here 
      var linkedObject: LinkedObject = new LinkedObject(value, id); 
     } 
    } 
} 

bir Yardım çok takdir edilecektir.

cevap

31

Sen özledim parantez:

var value: string = dataObjects[i].getValue(); 
var id: number = dataObjects[i].getId(); 
+8

Gelecekte size yardımcı olması için hatanın ne söylediğini anlamak yararlıdır. 'Type '() => string' 'string'.'' yazmak için atanamaz. Bu örnekte temelde" Bir string döndüren bir fonksiyon, tip dizgisi değişkenine atanamaz. "Bir kez okuduğunuzda() => string' doğru olarak anlamalı. Eğer saf JS olsaydı, bir hata olmazdı ve değişkeniniz geri döndürülen değer yerine bir işleve işaret ederdi ve neler olup bittiğini izlemek daha da zor olurdu. – DeezCashews

3

Eğer bu hatalar

  1. İlk sizi kontrol derleyici halini görmek nerelerde Ayrıca diğer Senaryolar ekleyerek desteklemeye son typescript derleyici indirin ES6 sözdizimleri

  2. typescript hala

bu hataları başlatma sentaksların olup olmadığını kontrol edin veya bu yöntemleri veya değişkenleri arama yaparken bakın
Kontrol olsun, hatta bu aslında gelişme engellemez yazarak hataları ile çıktı üretir fonksiyonların parametreleri 'string' ve 'boolean' veya 'numara' atama Örnek

için

olarak başlatıldı, yanlış veri türü vardır 1.

private errors: string; 
    //somewhere in code you assign a boolean value to (string)'errors' 
    this.errors=true 
    or 
    this.error=5 

2.Dizi başlatma için Köşeli parantezler eksik olduğu için

private values: Array<number>;  
    this.values.push(value); //Argument of type 'X' is not assignable to parameter of type 'X' 

burada hata iletisi O olmadan bile çalışır, ancak VS Kırmızı alarm uyarıları vardır.

private values: Array<number> = [];  
this.values.push(value); 

Not:
JavaScript tipleştiriyor atanan değere göre unutmayın, Yani typescript onları uyarır ancak kod bu hataları VS Kanununda

Ör vurgulanan bile yürütür:

var a=2; 
typeof(a) // "number" 
var a='Ignatius'; 
typeof(a) // "string" 
0

İlgili

, gariptir, benim bu konuda şikayetçi oldu sınıfın ithalat eksikti ve benim IDE bunu algılamadı. Ben yapıyorum

1

açısal 2 ve typescript ve ben .map(key = > yerine .map(key =>

Kesinlikle aptal sözdizimi hataları için gözlerini açık tutmak zorunda

benim ok gösterimde bir boşluk vardı fark etmedi

İlgili konular