2015-11-10 104 views

回答

0

請參閱array types上的TypeScript文檔。所有屬性必須具有相同的返回類型,因此您無法使用接口上的返回類型編號聲明長度。

要得到數組的長度,你可以轉換回一個普通的數組類型:

(<Array<any>>yourArray).length 
1

在你Dictionary接口,

[index: string]: string; 

被稱爲串指數的簽名,並告訴編譯器Dictionary的所有屬性必須爲string。您通常會使用索引簽名來避免混合類型的數組。

所以那麼這樣做是OK:

let d: Dictionary; 
d["foo"] = "bar"; 

但是,這會給出一個編譯器錯誤:

let d: Dictionary; 
d["foo"] = 1000; 

您可以定義屬性Dictionary,只要你每次定義屬性的類型的string。例如,這是確定:

interface Dictionary { 
    [index: string]: string; 
    foo: string; 
} 

,將允許你這樣做:

let d: Dictionary; 
d.foo = "bar"; 

但在你的情況,你試圖定義一個名爲length屬性作爲number你已經告訴後編譯器,所有屬性將是string類型。這就是爲什麼你有一個編譯器錯誤。

相關問題