打字稿:类型“”没有索引签名
Posted
技术标签:
【中文标题】打字稿:类型“”没有索引签名【英文标题】:Typescript: type '' has no index signature打字稿:类型“”没有索引签名 【发布时间】:2018-12-15 07:25:40 【问题描述】:我想编写一个函数来用一系列值替换模板中的字段。字符串模板中的字段格式为keyname
。代码如下:
function replaceAll(template:string, values:object)
Object.keys(values).map((e) =>
const key = new RegExp("" + e + "", "g");
template = template.replace(key, values[e]); //xxx
);
return template;
let result = replaceAll("the q brown f...", q: "quick", f: "fox");
很遗憾,这段代码无法编译。在values[e]
@xxx,它给出:
元素隐式具有“any”类型,因为类型“”没有索引签名。
(参数)值:对象
错误消息是什么意思,我该如何解决?
【问题讨论】:
object
不是indexable type,所以values[e]
被输入为any
。
values
应该是一个字典或一个数组,而不仅仅是一个对象。
【参考方案1】:
您可以使用以下类型: [key: string]: string
,自然将string
更改为可以分别作为键和值传入的任何内容。
您收到错误消息是因为当您访问对象的值时,它不知道它应该是什么类型,因此隐含为 any。当然,您仍然可以有一个 明确 any 的值,但您仍然需要使用类似于我给出的示例的东西。
【讨论】:
[key: string]: string
中的方括号是什么意思?
@OldGeezer 键是字符串,值也是。
我的意思是方括号不是用来表示数组的吗?
@OldGezer 它是一个对象。这就是键的表示方式,因为数组不能是键,而文字“字符串”可以。以上是关于打字稿:类型“”没有索引签名的主要内容,如果未能解决你的问题,请参考以下文章