我正在通過閱讀關於索引器類型的this official document來學習打字稿。打字稿「不是索引器的子類型」,這是什麼意思?
我無法理解這樣的代碼:你爲什麼把 '長度' 指數型內
interface NumberDictionary {
[index: string]: number;
length: number; // ok, length is a number
name: string; // error, the type of 'name' is not a subtype of the indexer
}
首先,???
let myDict : NumberDictionary;
myDict[10] = 23;
NumberDictionary是一種索引類型。爲什麼NumberDictionary定義中有一個長度?索引類型應該是[10],爲什麼有長度? JavaScript中的數組對象有長度,但索引類型是數組?如果是這樣,爲什麼上面的例子定義了一個長度?有必要嗎? 對不起,我的咆哮。你可以看到我很困惑。
其次,
name: string;// error, the type of 'name' is not a subtype of the indexer
我不明白,在此行的註釋。爲什麼名稱必須是索引器的子類型?索引器就像是一個[10] =「Tom」,那麼索引器的子類型是什麼?
代碼的目的是作爲一個壞榜樣之間的矛盾。所以,我想,'ok'註釋僅僅意味着從類型檢查器的角度來看它是可以的,而不是一般意義上的。 – artem