J. *_*Doe 6 javascript momentjs typescript angular
我正在尝试向 moment.js 库添加额外的功能。我想添加一个函数,它本身需要在其主体中调用 moment() ,但我很难弄清楚这一点。
我正在使用最新版本的 Typescript 和 moment.js。我试图找到解决方案,但一无所获。我认为这个解决方案(Typescript:向 momentjs 原型添加函数)已经接近工作,但仍然没有任何效果。
到目前为止我所拥有的是:
import * as moment from 'moment';
export namespace moment{
interface Moment{
myFunc(): boolean;
}
}
(moment as any).fn.myFunc = function() {
return moment(....);
};
Run Code Online (Sandbox Code Playgroud)
我不确定我哪里出错了,但是当我尝试使用 moment 库和 myFunc 时,我认为导入 moment (import * as moment from 'moment')就足够了,但 myFunc 无法识别,只能识别标准时刻功能。
前任。这表示 myFunc() 未被识别。
import * as moment from 'moment'
import Moment = moment.Moment
... moment().add(...) //works
... moment().myFunc() // doesn't recognize myFunc()
Run Code Online (Sandbox Code Playgroud)
关于如何让它发挥作用有什么建议吗?
您可以扩展moment
以包含您myFunc
使用 TypeScript 的声明合并。
以下对我有用(使用 TypeScript 2.4.2):
import * as moment from 'moment';
declare module "moment" {
interface Moment {
myFunc(): moment.Moment;
}
}
(moment as any).fn.myFunc = function (): moment.Moment {
console.log("Called myFunc!");
return moment();
};
console.log(moment().myFunc().valueOf());
Run Code Online (Sandbox Code Playgroud)
并输出:
Called myFunc!
1501901308611
Run Code Online (Sandbox Code Playgroud)