【发布时间】: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应该是一个字典或一个数组,而不仅仅是一个对象。
标签: typescript