我试图找到一个名为csTotCommit的数组列的累积和。我得到下面的索引错误关于使用一个数字来索引数组。
元素隐式地具有'any'类型,因为'number'类型的表达式不能用于索引类型'IBasis'。在类型"IBasis"上找不到参数类型为"number"的索引签名。ts(7053)prev[current . 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,
}
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.
};