0
打字稿(2.0)並沒有給出這樣的錯誤:奇怪的可轉位styping
let x: { [index: string]: Object } = {1: 2}
我看到有兩個潛在的錯誤:
- 索引字段是數字型,但應該是字符串
- 項目類型也是數字,但應該是一個對象類型
爲什麼它通過?
打字稿(2.0)並沒有給出這樣的錯誤:奇怪的可轉位styping
let x: { [index: string]: Object } = {1: 2}
我看到有兩個潛在的錯誤:
爲什麼它通過?
有兩種類型支持指數的簽名:字符串和數字。 可以同時支持這兩種類型的索引器,但從數字索引器返回的類型 必須是從字符串索引器返回的 類型的子類型。這是因爲當用一個數字索引時,JavaScript實際上會將它轉換爲一個字符串,然後索引到 的一個對象。這意味着與100(一個數字)索引是相同的 東西作爲索引與「100」(一個字符串),所以這兩個需要是 一致。
這就是爲什麼當您使用數字作爲索引而不是字符串時它接受它。
索引始終是字符串。
Any
is explained它指出:... Object類型的變量只允許你任意值分配給 他們...
用下面的例子:
let prettySure: Object = 4;
基本上,Object
可以是任何東西。
謝謝,這是有道理的。 – WHITECOLOR