【问题标题】:Moment.js and TypescriptMoment.js 和 Typescript
【发布时间】:2019-07-19 16:46:52
【问题描述】:

我正在尝试将 moment.js 与 typepscript 一起使用,但是,当我尝试创建新的 moment 时,我收到以下消息:

TS7009:“新”表达式,其目标缺少构造签名, 隐含“任何”类型。

import * as Moment from 'moment';

const now = new Moment();

我应该把它变成一门课吗?如果是这样怎么办?谢谢!

【问题讨论】:

  • 只使用const now = Moment(); 甚至更好:import * as moment from 'moment' 作为一个函数而不是一个类。通常拼写为小写。然后你可以使用const now = moment()

标签: typescript momentjs


【解决方案1】:

您不需要将new 与 moment 一起使用。此外,根据您的 typescript 版本和构建配置,有几种不同的导入方式。您可以在 Moment 的文档中阅读更多相关信息:https://momentjs.com/docs/#/use-it/typescript/

这是它在我的代码库中的样子(您的导入可能不同):

import moment from 'moment';

const now = moment();

如果你想添加一个显式类型,那就是:

const now: moment.Moment = moment();

【讨论】:

  • 很确定它是import * as moment from 'moment',至少我在我的 Angular 项目中使用了这个。 import moment from 'moment' 引发错误。但是你是对的,你应该使用没有 new 关键字的函数。
  • 也许我的构建设置不同。我正在使用的代码库以我展示的方式导入它。但我会在回答中提到这一点。
  • 这很奇怪。请问你是不是这样安装的:npm i moment
  • package.json 有以下条目:"moment": "^2.22.2",。最好的猜测是使用什么命令来添加它,npm i --save moment
  • 在这种情况下应该是一样的......这真的很奇怪。虽然 +1 的类型很好添加
【解决方案2】:

在您的打字稿项目的tsconfig.json 文件中添加"noImplicitAny": false。它会解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 2016-09-18
    • 2017-08-08
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多