我有一个包含任务名、createdAt字段的对象数组.
我下个星期的日子越来越短,我想要下个星期的任务。
我已经尝试了下面的代码,但是它产生了错误:
期望一个赋值或函数调用,而不是看到一个表达式
const nextWeekDays = (key: string): any => {
switch (key) {
case 'week-next':
const startNextWeek = moment().add(1, 'weeks').startOf('isoWeek');
const endNextWeek = moment().add(1, 'weeks').endOf('isoWeek');
let date: string[] = [];
for (
var m = moment(startNextWeek);
m.isBefore(endNextWeek);
m.add(1, 'days')
) {
date.push(m.format('DD-MM-YYYY'));
}
return date;
要获得任务长度的代码:
case 'week-next':
let dates = veri("week-next")
return props.dealspaceTaskList.filter(
dt => dates.includes((t:any) => {t == dt.createdAt})
).length;
发布于 2022-10-05 01:04:55
Array.prototype.includes
的语法是myArray.includes(searchElement)
,它不使用函数参数(除非数组实际上是一个函数列表,在这种情况下,您可以通过函数引用进行搜索)。
因此,在你的例子中,TypeScript指出了这个差异:
let dates = ["01-02-2022", "02-02-2022"]
const result = [{
createdAt: "03-02-2022"
}, {
createdAt: "04-02-2022"
}].filter(
dt => dates.includes((t: any) => { t == dt.createdAt }) // Error: Argument of type '(t: any) => void' is not assignable to parameter of type 'string'.
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
).length;
您只需要传递值,而不是函数形式:
const result2 = [{
createdAt: "03-02-2022"
}, {
createdAt: "04-02-2022"
}].filter(
dt => dates.includes(dt.createdAt) // Okay
).length;
https://stackoverflow.com/questions/73951957
复制相似问题