gpt4 book ai didi

javascript - typescript :向 moment.js 命名空间添加一个函数

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:16 25 4
gpt4 key购买 nike

我正在尝试向 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(....);
};

我不确定哪里出错了,但是当我尝试使用 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()

关于如何让它工作有什么建议吗?

最佳答案

您可以使用 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

关于javascript - typescript :向 moment.js 命名空间添加一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45514624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com