0

它添加[x: string]: any;到任何对象。为什么?对象没有x属性...

VSCode 弹出帮助程序

第二个示例演示了一个问题 - 当我将鼠标悬停polygon在表达式中的绑定名称上时polygon.y += 5,IntelliSense 会向我显示一个[x: string]: any;位于大括号polygon的弹出窗口,因此很容易假设对象具有x属性,不是吗?你不同意 IntelliSense 应该[x: string]: any在对象定义之上显示那个东西吗?

第二个例子

4

1 回答 1

1

[x: string]: any;是一个类型签名。它说一个对象可以有任意数量的属性,所以如果你这样做它不会将它标记为错误,即

levelChars.sth = "sth";

这有时正是您想要的,但主要是一个错误。Typescript 会将其标记为错误并为您的对象提供严格的签名(不带[x: string]: any;)。

于 2018-09-21T12:51:29.743 回答