【问题标题】:Moment.js plugins in Ionic2/Cordova typescript projectIonic2/Cordova typescript 项目中的 Moment.js 插件
【发布时间】:2017-08-08 01:49:21
【问题描述】:

在我用 Typescript 编写的 Ionic 2 项目中,我使用了 moment.js 库。 我使用代码 sn-p 导入它:

import * as moment from 'moment';

这样做后,在我的组件中我可以正常使用moment,即:

let endDate = moment(data.endDate);

但是,现在我想使用一个专用于 moment.js 的插件——来自这个 repo 的 moment-weekday-calc:https://github.com/andruhon/moment-weekday-calc

我已经通过 npm 安装了插件,但我无法让它运行。 我试过了:

import * as moment from 'moment';
import 'moment-weekday-calc';

//(...) - 我的组件代码在这里

  let test = moment().isoWeekdayCalc({
    rangeStart: '1 Apr 2015',
    rangeEnd: '31 Mar 2016',
    weekdays: [1,2,3,4,5],
    exclusions: ['6 Apr 2015','7 Apr 2015'],
    inclusions: ['10 Apr 2015']
  }); //260

以上代码抛出错误:

Typescript Error
Property 'isoWeekdayCalc' does not exist on type 'Moment'.

知道如何在我的 ionic/cordova 的 typescript 应用程序中使用这个插件吗?

【问题讨论】:

  • 看起来你的 moment-weekday-calc 插件没有类型声明文件。您需要拥有它才能将其方法包含在 moment 命名空间中...另一个插件 here 的类似错误
  • 不幸的是,moment-weekday-calc 没有附带声明,因此您有 3 个选项。将@sebaferreras 方法与any 一起使用,但您不会有代码完成和其他花哨的东西,在github 上提出问题让作者发出此类文件或简单地自己编写它们;)ofc 以@ 上的拉取请求的形式进行987654323@ ;)

标签: angular cordova typescript ionic2 ionic3


【解决方案1】:

由于该错误只是打字稿抱怨isoWeekdayCalc 未在moment 的类型定义中定义,因此您可以将其转换为any,如下所示:

let test = (<any>moment()).isoWeekdayCalc({
            rangeStart: '1 Apr 2015',
            rangeEnd: '31 Mar 2016',
            weekdays: [1,2,3,4,5],
            exclusions: ['6 Apr 2015','7 Apr 2015'],
            inclusions: ['10 Apr 2015']
        }); //260

【讨论】:

    猜你喜欢
    • 2017-04-19
    • 2016-12-24
    • 2017-01-24
    • 2017-07-01
    • 2020-08-29
    • 2017-09-27
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多