我有这段代码:const sectionInstance: FieldValues = sectionInstances[i]for (const field in sectionInstance) { console.log(sectionInstance[field])}field这里当然是一个字符串。这是 的类型定义FieldValues:export interface FieldValues = { [key: string]: FieldValue;}我仍然收到此错误:元素隐式具有“任何”类型,因为类型“字符串”的表达式不能用于索引类型“FieldValues”。在类型“FieldValues”上找不到参数类型为“string”的索引签名。Vetur(7053)我没有为 声明类型为“string”的索引签名interface FieldValues吗?为什么会出现此错误?
2 回答
Qyouu
TA贡献1786条经验 获得超11个赞
只需=从接口定义中删除即可。
interface FieldValues {
[key: string]: FieldValue;
}
...
const sectionInstance: FieldValues = sectionInstances[i];
for (const field in sectionInstance) {
console.log(sectionInstance[field]);
}
不负相思意
TA贡献1777条经验 获得超10个赞
据我所知,Typescript 无法从[key: string]. 它仅在您尝试概括某些键(可能除了其他键)可能存在字符串类型时才有用。TS 无法确保您在 中访问的密钥是您在 中使用for的类型。你应该明确地说出来。string[key: string]
添加回答
举报
0/150
提交
取消
