如何使用javascript调用一个有时有参数,有时没有参数的方法并做出反应



有时,我想将第二个参数传递给函数,但有时我不传递第二个自变量。

以下是我的方法:

const updateStartEnd = (newEndDate: any, newStartDate: any) => {
if (prevDate && newStartDate && newStartDate.isBefore(prevDate, 'd')) {
setEndDate(newStartDate);
} else {
setEndDate(newEndDate);
}
};

我称这个函数如下:

const some_function = (newDates: {startDate, endDate}) => {
if (endDate !== null) {
updateStartEnd(endDate, startDate);
} else {
updateStartEnd(endDate, startDate); //here i dont want to pass startDate as it will not need to check for if condition in the updateStartEnd.
}
}

有人能帮我吗?

使参数在updateStartEnd中可选。然后,当这两个参数都是未定义的时,您需要在updateStartEnd内部进行处理

const updateStartEnd = (newEndDate?: any, newStartDate?: any) => {
// rest of the code
};

由于使用的是typescript,因此可以设置默认参数。此外,在这种方法中,由于您总是会得到一个moment对象,因此&& newStartDate将成为一个冗余检查,并且可以删除

const updateStartEnd = (newEndDate: moment = moment(), newStartDate: moment = moment()) => {
if (prevDate && newStartDate.isBefore(prevDate, 'd')) {
setEndDate(newStartDate);
} else {
setEndDate(newEndDate);
}
};

您甚至可以将args作为可选参数,但随后必须添加逻辑来验证undefined

const updateStartEnd = (newEndDate?: moment, newStartDate?: moment) => {
if (prevDate && newStartDate && newStartDate.isBefore(prevDate, 'd')) {
setEndDate(newStartDate);
} else if(!!newEndDate) {
setEndDate(newEndDate);
}
};

此外,由于您正在处理日期,并且希望它是moment类型,因此最好使用moment作为类型,而不是任何类型。如果我称之为灭绝:

updateStartEnd(true, true)

它会提前验证并抛出错误。

相关内容

  • 没有找到相关文章

最新更新