我在打字稿中的下列定義中遇到錯誤,請問我知道問題是什麼?TypeScript接口定義類型錯誤
interface Dictionary {
[index: string]: string;
length: number;
}
我在打字稿中的下列定義中遇到錯誤,請問我知道問題是什麼?TypeScript接口定義類型錯誤
interface Dictionary {
[index: string]: string;
length: number;
}
請參閱array types上的TypeScript文檔。所有屬性必須具有相同的返回類型,因此您無法使用接口上的返回類型編號聲明長度。
要得到數組的長度,你可以轉換回一個普通的數組類型:
(<Array<any>>yourArray).length
在你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
類型。這就是爲什麼你有一個編譯器錯誤。
您是否看過錯誤? – SLaks