簡體   English   中英

Typescript接口 - 索引簽名不一致

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM