繁体   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