为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣染霜花 2022-12-18 16:06:43
我有这段代码: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]);

}


查看完整回答
反对 回复 2022-12-18
?
不负相思意

TA贡献1777条经验 获得超10个赞

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



查看完整回答
反对 回复 2022-12-18
  • 2 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号