gpt4 book ai didi

typescript 接口(interface) - 索引签名不一致

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:10 26 4
gpt4 key购买 nike

如果我在 Typescript 中声明一个具有单个命名属性和索引签名的接口(interface),我的假设是索引签名允许我向对象添加属性而不会出现语法错误。

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] Property 'haveToPeel' does not exist on type 'Fruit'."

我已经阅读了有关索引签名的文章,但无法深入了解如何允许我的对象在创建后动态扩展而不会出现 TS 编译错误。

最佳答案

这是预期的行为。

要使用索引签名,您需要使用索引语法——或使用您演示的文字赋值。

let banana: Fruit;
banana.colour = 'yellow';
banana['haveToPeel'] = true;

关于 typescript 接口(interface) - 索引签名不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37748369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com