瞬间的isSameOrBefore和isSameOrAfter从瞬间调用并传递瞬间返回“不是函数”

时间:2019-01-10 11:03:14

标签: typescript momentjs

为什么矩的isSameOrBeforeisSameOrAfter函数不适用于isBeforeisAfter的数据?

以下是isSameOrBeforeisSameOrAfter无法正常工作的一些非常简单的孤立示例:

moment("2018-10-12 10:44:01").isSameOrBefore(moment("2018-10-12 10:44:00"))
TypeError: moment(...).isSameOrBefore is not a function [Learn More]

moment("2018-10-12 10:44:01").isSameOrAfter(moment("2018-10-12 10:44:02"))
TypeError: moment(...).isSameOrAfter is not a function [Learn More]

但是使用相同类型的数据,isBeforeisAfter可以正常工作:

moment("2018-10-12 10:44:01").isBefore(moment("2018-10-12 10:44:00"))
false
moment("2018-10-12 10:44:01").isAfter(moment("2018-10-12 10:44:02"))
false
moment("2018-10-12 10:44:00").isBefore(moment("2018-10-12 10:44:01"))
true
moment("2018-10-12 10:44:02").isAfter(moment("2018-10-12 10:44:01"))
true

2 个答案:

答案 0 :(得分:2)

针对我的解决方案是将Moment.js更新到2.23.0版本。我的moment.d.ts文件误导了我,该文件出于未知的原因而使用的是Moment.js的2.11.1版本,而不是我安装的版本(版本2.9.0)。

更新后,请确保在浏览器的调试器的文件浏览器中签入moment.js文件,并验证其是否与项目中的文件匹配-如果不匹配,至少在Firefox / Waterfox中,请尝试重新启动浏览器,然后在遇到问题的项目页面上按Ctrl + F5。

这对我来说是一个教训,不要过于相信TypeScript的类型安全性!

答案 1 :(得分:1)

从版本 2.11.0 开始,引入了isSameOrBeforeisSameOrAfter方法:https://momentjs.com/docs/#/query/is-same-or-before/

您可以升级版本并尝试以下操作:

moment('2018-10-12 10:44:01').isSameOrBefore('2018-10-12 10:44:00')