解决 元素隐式具有 "any" 类型,因为类型为 "string" 的表达式不能用于索引类型 "Object"。 在类型 "Object" 上找不到具有类型为 "string" 的参数的索引签名
AI-摘要
切换
AnZhiYu GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
解决 元素隐式具有 "any" 类型,因为类型为 "string" 的表达式不能用于索引类型 "Object"。 在类型 "Object" 上找不到具有类型为 "string" 的参数的索引签名
安知鱼问题: 解决 元素隐式具有 “any” 类型,因为类型为 “string” 的表达式不能用于索引类型 “Object”。 在类型 “Object”
上找不到具有类型为 “string” 的参数的索引签名
描述: 在写代码的时候,对一个对象做了一个 forEach 循环,然后取到了其每一个 key 对应的 value 值,但是写完之后发现Typescript
报错了,错误内容就是如题,有点奇怪,特此去了解一下
1 | Object.keys(obejct).forEach((key) => { |
解决过程
原谅我报错都没有看明白,查了一下之后才知道,原来 key 值的类型不是 string,在 javascript 中是默认给你转好的,而在 Typescript 中则不是,因此要么转,要么声明,要么忽略…
方案一:忽略
在 tsconfig.json
中 compilerOptions
里面新增忽略的代码,如下所示,添加后则不会报错
1 | "suppressImplicitAnyIndexErrors": true |
方案二:声明
在定义的 Interface
里对其进行声明,如下所示,声明过后,也不会再报错
1 | interface DAMNU_ENABLE { |
方案三:对其使用 keyof 进行判断
1 | export function isValidKey( |
定义一个函数:isValidKey()
,然后对需要使用到的地方进行一次判断
1 | for (const key in obejct) { |
这三种方式都可以解决如题的报错信息,但是个人比较倾向于第二种或者第三种,并不是第一种不好,只是说,写第一种有一点点写 any 的感觉,不到万不得已不这么弄;
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果