正确的ES6导入添加时刻精确范围插件

时间:2017-07-28 17:35:36

标签: javascript angular typescript ecmascript-6 momentjs

我在角度4项目中使用typescript并希望使用moment-precise-range-plugin。

我已在https://momentjs.com/docs/#/use-it/typescript/之后安装moment,但我想添加exactrange插件http://momentjs.com/docs/#/plugins/preciserange/

对于精确范围插件,Node.js的安装位于https://codebox.org.uk/pages/moment-date-range-plugin并指定require('moment-precise-range-plugin');,但没有安装Typescript。

我已尝试过import { Moment } from 'moment-precise-range-plugin';,但收到以下打字稿错误

Could not find a declaration file for module 'moment-precise-range-plugin'. 'c:/Users/[UserName]/app/node_modules/moment-precise-range-plugin/moment-precise-range.js' implicitly has an 'any' type. Try npm install @types/moment-precise-range-plugin if it exists or add a new declaration (.d.ts) file containing declare module 'moment-precise-range-plugin';'

非常欢迎任何想法!

3 个答案:

答案 0 :(得分:4)

我在Angular 4项目中使用了moment-precise-range-plugin,并且能够将其导入:

import 'moment-precise-range-plugin';

我导入片刻后导入了它:import * as moment from 'moment';

有一点需要注意:我的TS linter仍然警告我preciseDiff()会导致问题,但一切都运行得很好。尝试一下,看看它是否有效。

答案 1 :(得分:0)

我通过在src / typings.d.ts中添加定义文件来修复它

import * as moment from 'moment';

export = moment;

declare module 'moment' {
  interface Moment {
    preciseDiff(start: string | Date | moment.Moment): string;
  }
}

答案 2 :(得分:0)

注意:我正在使用Angular 10。

将其导入为-> import 'moment-precise-range-plugin';

时可以使用

并添加以下三行:

declare module 'moment' {
  function preciseDiff(start: string | Date | moment.Moment, end: string | Date | moment.Moment, convertToObject?: boolean): any;
}