Моменты isSameOrBefore и isSameOrAfter, возвращаемые моментом, «не является функцией», когда вызывается из момента и прошел момент - PullRequest
0 голосов
/ 10 января 2019

Почему моментные функции isSameOrBefore и isSameOrAfter не работают для данных, для которых isBefore и isAfter работают?

Вот несколько очень простых изолированных примеров isSameOrBefore и isSameOrAfter, не работающих:

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]

Но с данными такого же типа 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

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Решением этой проблемы для меня было обновление до версии 2.23.0 файла Moment.js. Я был введен в заблуждение моим файлом moment.d.ts, который по неизвестным причинам был для версии 2.11.1 файла Moment.js, а не для версии, которую я установил (версия 2.9.0).

После обновления обязательно проверьте в обозревателе файлов отладчика браузера файл moment.js и убедитесь, что он совпадает с файлом в вашем проекте - если это не так, по крайней мере в Firefox / Waterfox, попробуйте перезапустите браузер, затем нажмите Ctrl + F5 на странице вашего проекта, с которой вы столкнулись с проблемой.

Это был урок для меня, чтобы не верить в безопасность типов в TypeScript!

0 голосов
/ 10 января 2019

Методы isSameOrBefore и isSameOrAfter были введены с версии 2.11.0 : https://momentjs.com/docs/#/query/is-same-or-before/

Вы можете обновить версию и попробовать это:

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