P粉1945410722023-08-25 11:31:36
這是有意的行為。 在TypeScript GitHub儲存庫上查看此問題的長時間討論
#你的strictNullChecks
關閉了;試著打開它。
P粉3302320962023-08-25 11:19:47
TypeScript 4.1引入了一個--noUncheckedIndexedAccess
編譯器標誌,實現了在microsoft/TypeScript#13778中提出的建議,以考慮這種情況下的 undefined
。請注意,該功能不會作為--strict
編譯選項集的一部分啟用,並且被稱為“嚴格的索引簽名”,因為它會在程式設計師可能不希望或期望的情況下發出關於undefined
的警告。
您已經發現索引簽名不會像可選屬性那樣將| undefined
新增到元素類型中。在microsoft/TypeScript#13778上提出了建立一個編譯器選項來實現這一點的建議。您可以閱讀該建議中的評論;它們連結到其他問題,但共識是高錯誤率幾乎使其無用。
也提到您可以手動將| undefined
新增至元素類型:
const list: (Item | undefined)[] = [{ id: 'a' }, { id: 'b' }];
這將按您的預期工作,而不會影響整個語言。