我正在尝试在打字稿上使用Linq js库。我有以下功能;
calculateAvgRating(data) {
this.user_ratings = Enumerable.from(data).groupBy(p => '${p.rating_type}', null,
function (key, g) {
var result = {
rating_type: key,
total: g.sum("$.rating"),
avg: g.average("$.rating")
}
return result;
}).toArray();
}
但是,我计算总数和平均值的行给了我以下打字稿错误;
类型'string'的参数不能分配给类型的参数 '(element:{})=>数”。
我知道,我需要更改我给予sum和average函数的参数,但我无法弄明白。
答案 0 :(得分:0)
似乎linq.js库的定义文件不支持简写(op.sum("$.value | 0")
),尽管库有。
您可以排除ts编译器提示库上的错误,这是不理想的,或者使用函数回调。
import { from } from 'linq';
interface IRating {
type: number,
value: number
};
let data: IRating[] = [{
type: 5,
value: 5.0
}, {
type: 0,
value: 1.0
}, {
type: 3,
value: 2.3
}, {
type: 0,
value: 0.6
}];
let result = from(data).groupBy(rating => rating.type, null, (key, op) => {
return {
type: key,
total: op.sum(item => item["value"] || 0),
avg: op.average(item => item["value"] || 0)
};
}).toArray();
console.log(result)