猿问

接口上“字符串”类型的索引签名无法识别(打字稿)

我有这段代码:


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吗?为什么会出现此错误?


白衣染霜花
浏览 203回答 2
2回答

Qyouu

只需=从接口定义中删除即可。interface FieldValues {  [key: string]: FieldValue;}...const sectionInstance: FieldValues = sectionInstances[i];for (const field in sectionInstance) {  console.log(sectionInstance[field]);}

不负相思意

据我所知,Typescript 无法从[key: string]. 它仅在您尝试概括某些键(可能除了其他键)可能存在字符串类型时才有用。TS 无法确保您在 中访问的密钥是您在 中使用for的类型。你应该明确地说出来。string[key: string]
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答