关于处理TS提示“元素隐式具有any类型,因为类型为string的表达式不能用于索引类型”的处理办法

247 阅读1分钟

问题

最近在实习过程中项目使用到了TS,但是前一天代码还好好的,第二天上午过来更新了一下vscode,项目突然就出现ts的提示了,如图

image.png 然后我又打开了几个文件,发现只要是动态访问属性的地方都出现了这个提示,例如:

aObj[key] = bObj[key];

类似上述的代码,复制或者访问,都出现了这种提示。

解决

方法一

在ts接口中定义:

[key:string]: any

这种写法可以解决,但是需要在项目中改动几十处,而且根源问题肯定不是在这里,因为前一天还没出现这个ts提示。

方法二

最后去群里问了一嘴,群内大佬给出了正确答案———vscode的ts版本和工作区(也就是项目的ts版本)不一致,解决方法

image.png 然后选择使用工作区版本

image.png 这样就解决了,或者在settings.json 配置文件中新增"typescript.tsdk": "node_modules/typescript/lib",也可以解决这个问题。

总结

项目的ts版本可能和vscode的版本不一致,在开发时最好直接选择使用项目的版本。