我正在尝试为moment.js库添加额外的功能。我想添加一个本身需要在其体内进行moment()调用的函数,并且我很难搞清楚这一点。
我正在使用最新版本的Typescript和moment.js。我试图找到一个解决方案,但我什么也没想出来。我认为这个解决方案(Typescript: add function to momentjs' prototype)已接近工作,但仍然没有。
到目前为止我所拥有的是:
import * as moment from 'moment';
export namespace moment{
interface Moment{
myFunc(): boolean;
}
}
(moment as any).fn.myFunc = function() {
return moment(....);
};
我不知道我哪里出错但是当我尝试使用时刻库和myFunc我认为导入时刻(导入*作为'时刻'的时刻)就足够了但myFunc无法识别,只有标准时刻功能。
实施例。这表示无法识别myFunc()。
import * as moment from 'moment'
import Moment = moment.Moment
... moment().add(...) //works
... moment().myFunc() // doesn't recognize myFunc()
有关如何使其发挥作用的任何建议吗?
答案 0 :(得分:3)
您可以使用TypeScript的declaration merging扩展moment
以包含myFunc
。
以下适用于我(使用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());
输出:
Called myFunc!
1501901308611