打字稿:isNaN不接受日期对象

时间:2019-03-29 23:30:49

标签: typescript

time

在上面的函数isDate()中,我正在检查输入是否为有效的Date对象。如果有效,它将返回传递的Date的字符串版本。如果无效,它将返回当前日期的字符串版本。

new Date()的问题在于,它将对输入值new Date(undefined))!isNaN()返回true。为了避免这种情况,我使用了!isNaN( new Date(undefined) ),在Date的情况下返回false。

现在的问题是打字稿不允许我将isNaN对象传递给TS2345: Argument of type 'Date' is not assignable to parameter of type 'number'. 函数。

错误

String.prototype

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

那可能是因为您想在函数time()中传递数字,所以数字不能转换为日期。

isObjectClass和isDate有点用,现在已经检查了参数的类型。

答案 1 :(得分:0)

您可以按以下方式将此日期对象转换为时间(!isNaN(time.getTime())

const time = (time: Date): string => {
return ((isDate(time) && !isNaN(time.getTime())) ? time : new Date()).toISOString();
};

在这里,getTime方法返回相应日期对象的数值。因此您可以轻松地将此数字值与isNaN一起使用