const inproessProjects = arr.filter(project => project.status === 'inproess') const totalRows = inproessProjects.reduce((acc, project) => acc + project.rows, 0) Unsafe call of an any typed value.eslint@typescript-eslint/no-unsafe-call 上面这段代码发生了报错,请帮我确认哪里报错了
时间: 2024-02-20 17:56:09 浏览: 69
请人帮忙编译看是否报错的工程
这个错误提示来自于 ESLint 的 `typescript-eslint` 规则,它指出在代码中出现了对 `any` 类型值的不安全调用,具体位置是在 `reduce` 方法的调用中。
在这段代码中,`reduce` 方法的初始值为 `0`,如果 `inproessProjects` 数组中的项目没有 `rows` 属性,就会出现类型不匹配的问题,导致运行时错误。为了避免这种情况,可以在调用 `reduce` 方法前,先对 `inproessProjects` 数组进行类型检查,确保其每个元素都具有 `rows` 属性,例如:
```typescript
const inproessProjects = arr.filter(project => project.status === 'inproess');
const totalRows = inproessProjects.reduce((acc, project) => {
if (typeof project.rows !== 'number') {
throw new TypeError('Invalid project rows value');
}
return acc + project.rows;
}, 0);
```
这样做可以在运行时前发现类型不匹配的问题,并抛出相应的错误,从而保证代码的健壮性。同时,你也可以通过类型声明或者接口定义来约束 `project` 对象的类型,从而避免这种类型不匹配的问题。
阅读全文