[英]Typescript interface - index signature inconsistency
如果我在Typescript中使用單個命名屬性和索引簽名聲明一個接口,我的假設是索引簽名允許我向對象添加屬性而不會出現語法錯誤。
interface Fruit {
colour: string;
[otherProperties: string]: any;
}
這在我在聲明中添加屬性時起作用,因此以下編譯好了:
let apple: Fruit = {
colour: 'green',
haveToPeel: false
}
但如果我在創作后延伸
let banana: Fruit;
banana.colour = 'yellow';
banana.haveToPeel = true;
然后我得到一個TS錯誤
“[ts]屬性'haveToPeel'在'Fruit'類型中不存在。”
我已經閱讀了索引簽名,但無法深入了解如何在創建后允許我的對象動態擴展而沒有TS編譯錯誤。
這是預期的行為。
要使用索引簽名,您需要使用索引語法 - 或使用您演示的文字作業。
let banana: Fruit;
banana.colour = 'yellow';
banana['haveToPeel'] = true;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.