当从某个时刻调用并经过了一个时刻时,moment 的 isSameOrBefore 和 isSameOrAfter 返回“不是函数”

Mat*_*old 7 javascript momentjs typescript

为什么momentjs isSameOrBeforeisSameOrAfter函数不适用于哪些isBefore和适用的数据isAfter

以下是一些非常简单的孤立示例,其中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]
Run Code Online (Sandbox Code Playgroud)

但是使用相同类型的数据,isBefore并且isAfter工作正常:

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
Run Code Online (Sandbox Code Playgroud)

Mat*_*old 5

对此我的解决方案是更新到 Moment.js 的 2.23.0 版。我被我的moment.d.ts文件误导了,不知什么原因,我的文件是 Moment.js 的 2.11.1 版,而不是我安装的版本(2.9.0 版)。

更新后,请务必检查浏览器的调试器文件资源管理器中的 moment.js 文件并验证它是否与您项目中的文件匹配 - 如果不匹配,至少在 Firefox/Waterfox 中,请尝试重新启动浏览器然后在您遇到问题的项目页面上按 Ctrl + F5 。

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