覆盖打字稿应用程序

时间:2017-05-09 14:00:04

标签: angular typescript momentjs

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

MomentJS具有更改时间源的功能,如here

所述

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

  

无法分配给'now',因为它是常量或只读属性。

与此同时,moment.d.ts暂时评论#now:

  

// ...为利润覆盖

所以我认为我做错了什么。

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

  

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

这些约束仅是预编译的,这意味着您可以告诉打字稿本质上忽略,并可以通过将其强制转换为any来覆盖。

import * as moment from "moment";

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

// continue with moment intellisense