查找累积和反应打字稿

Posted

技术标签:

【中文标题】查找累积和反应打字稿【英文标题】:Find Cumulative sum React Typescript 【发布时间】:2021-11-30 11:38:09 【问题描述】:

我正在尝试查找名为 csTotCommit 的数组列的累积和。我收到以下关于使用数字索引数组的索引错误。

元素隐式具有“any”类型,因为“number”类型的表达式不能用于索引“IBasis”类型。 在 'IBasis'.ts(7053) 类型上未找到带有“number”类型参数的索引签名 关于这个项目:prev[curr.csId]

我可以做些什么不同的事情来索引或从我的数组中获取这个累积总和。

这是我的代码:

  const cumSum = (data: IBasis[]) => 
    data.reduce((prev: IBasis, curr: IBasis) => 
      if (curr.csId && curr.rankId) 

      prev[curr.csId]? prev[curr.csId] += curr.csTotCommit : prev[curr.csId] = curr.csTotCommit
    
  )
  ;

这是我的界面:

export interface IBasis 
  rankId: number | null,
  csTrancheId: number | null,
  csId: number | null,
  csTotCommit: number | null,
  csBasisPerUnit: number | null,

【问题讨论】:

【参考方案1】:

reduce函数第一个输入是累加结果。

    const cumSum = (data: IBasis[]) => 
    data.reduce((total: number, curr: IBasis): number =>  
      if (curr.csId && curr.rankId) 
      
       total +=  curr.csId?? 0;   // '?? 0' will add zero when csId is null
       curr.csTotCommit = total;
     
      return total; // you always have to return cumulative total
  , 0) // starting with total as zero.
  ;

【讨论】:

谢谢,我无法将它作为数组返回。我尝试了 number[],但遇到了问题。 我已经更新了有帮助的答案 感谢 vaira...真的帮助了我。

以上是关于查找累积和反应打字稿的主要内容,如果未能解决你的问题,请参考以下文章

递归打字稿类型和反应形式

反应路由器/反应查询不会取消/发出导航请求 - 反应/打字稿

打字稿和本机反应的 ForwardRef 错误

用打字稿反应路由器

反应原生和打字稿多内联样式

反应打字稿打字不起作用