在打字稿应用程序中覆盖 moment.now()

Tim*_*hko 6 momentjs typescript angular

我有一项任务是在 Angular2 应用程序中将 MomentJS 与服务器时间同步。

MomentJS有一个功能,改变时间源,因为它说明在这里

但是打字稿编译器不允许我覆盖 moment#now() 函数,因为它作为函数从 moment.d.ts 中的命名空间导出,所以我得到了错误。

不能分配给 'now',因为它是一个常量或只读属性。

同时,moment.d.ts 有一条评论为moment#now:

//... 覆盖以获取利润

所以我假设我做错了什么。

我使用 angular-cli rc4, MomentJS 2.18.1 并将其导入为

从“时刻”导入 * 作为时刻;

我感谢您的帮助。

Zze*_*Zze 0

“打字稿编译器不允许我覆盖该moment#now()函数,因为它从 中的命名空间作为函数导出moment.d.ts,所以我收到错误。”

这些类型的约束仅是预编译的,这意味着您可以告诉 typescript 本质上忽略并让您通过将其转换为any.

import * as moment from "moment";

// temporary cast as any to override.
(moment as any).now = () => serverDateTime

// continue with moment intellisense
Run Code Online (Sandbox Code Playgroud)