对象数组调用array.some()方法出现TS2345错误如何解决?
报错根因
Array.some()、Array.findIndex()均属于数组判断类方法,TS对这类方法的入参回调有强制类型要求:回调必须返回布尔值,用来标记当前遍历项是否匹配条件。
你当前使用带大括号的箭头函数写法,且大括号内没有显式声明return,回调默认返回void类型,和要求的boolean类型不匹配,因此触发TS2345类型错误。
修复方法
两种写法任选其一即可:
- 写法1:省略箭头函数的大括号,自动返回表达式结果
let existeApr = this.pendenciasList.some(element => !isUndefined(element.isSelected) && element.isSelected ) let existeRej = this.pendenciasList.some(element => !isUndefined(element.isSelected) && element.isSelected )
- 写法2:保留大括号,手动添加return语句返回布尔值
let existeApr = this.pendenciasList.some(element => { return !isUndefined(element.isSelected) && element.isSelected }) let existeRej = this.pendenciasList.some(element => { return !isUndefined(element.isSelected) && element.isSelected })
findIndex方法的报错原因和修复逻辑完全一致,只要保证传入的回调函数返回布尔值即可解决问题。
内容的提问来源于stack exchange,提问作者FilipeFerracini
相关产品推荐
相关产品推荐

