在TypeScript项目中*(严格模式下【"strict": true,】),使用类似 obj[key]来进行取值时如下图
会出现如下报错
error TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'XXX'.
No index signature with a parameter of type 'string' was found on type 'XXX'.
解决方式
方式一
在【tsconfig.json】文件中,【compilerOptions】节点下,配置
"suppressImplicitAnyIndexErrors": true
方式二
将key的类型改为 keyof 对象的类,即
interface A{
a:string
}
type KeyType= keyof A
const key:KeyType='a'
const obj:A={a:'1'}
obj[key]
原因
原因是key的值并不一定是对象的类中的字段名,要么放开ts限制如方式一,要么规范key的类型(或者说值得范围)如方式二