在写react+ts项目时候 vs报这个错误 constructor(props){ super(props); this.state = store.getState(); }换成 constructor(props:any){ super(props); this.state = store.getState(); }
问题:
元素
隐式
具有
“any“
类型
,因为
类型
为 “string“ 的表达式不能用于索引
类型
“Object“。 在
类型
“Object“ 上找不到
具有
类型
为 “string“ 的参数的索引签名
描述: 在写代码的时候,对一个对象做了一个for…in循环,然后取到了其每一个key对应的value值,但是写完之后发现Typescript报错了,错误内容就是如题,有点奇怪,特此去了解一下
for (const key in obejct) {
// 处理...
obejct[key]
最近在前端项目中遇到在用字符串当对象的key时报错,报错信息如下:
“
元素
隐式
具有
“any”
类型
,因为
类型
为 “string” 的表达式不能用于索引
类型
”
在
类型
XXX 上找不到
具有
类型
为 “string” 的参数的索引签名。
搜索了一圈解决方案,没一个特别优雅的。
方案一,修改tsconfig
是修改tsconfig.json,加下面这行参数屏蔽检查,从而不报错。
"suppressImplicitAnyIndexErrors":true,
方案二,写一个函数转
类型
export function
import * as antIcons from "@ant-design/icons-vue";
export function setupAntdIcon(app: App<Element>): void {
// 注册组件
Object.keys(antIcons).forEach((key) => {
app.component(key, antIcons[key]);
fetchJSErrorDetail(tabelParams).then((data: any) => {
console.log('快应用异常数据列表.data', data)
setTableData(data.data.map((item: any) => { return item.crash_rate = (item.crash_uv / item.start_cnt) }))
// crash_rate
元素
隐式
具有
“any”
类型
,因为
类型
为 “string” 的表达式不能用于索引
类型
在使用typescript时,在对变量进行了
类型
声明后,在使用for in 的时候出现了这样的问题
经过查资料,key值的
类型
不是string,在
javascript
中是默认给你转好的,而在Typescript中则不是,因此要么转,要么声明,要么忽略
修改tsconfig.json文件中的配置
export function isValidKey(key: string | number | sym
在 ts + react 系列 中,数据都是本地的 mock,那么如何搭建一个真实的 API server 呢?
按照惯例,先搭建一个基于 ts + express 的服务端开发环境:
express-generator
express-generator:快速创建 Express 应用程序框架。
可以使用 npx 命令(在 Node.js 8.2.0 中可用)运行应用程序生成器。
$ npx express-generator ts-express
对于早期的 Node 版本,可将应用程序生
ts7053:
元素
隐式
具有
“any”
类型
,因为
类型
为 “any” 的表达式不能用于索引
类型
“{ xxx: xxx; }”。
在React-Typescript中遇到的问题,网上大部分都是修改配置什么的,我这里是加了个判断。
下面的TypeScript函数用于判断key是否存在对象
类型
中
export function isValidKey(key: string, object: object): key is keyof typeof object {
return key in o