【问题标题】:Using moment.js (or moment-timezone.js) in TypeScript project在 TypeScript 项目中使用 moment.js(或 moment-timezone.js)
【发布时间】:2016-11-24 15:24:15
【问题描述】:

这是我到目前为止所做的:

  • 安装 NodeJs 并使用它:node 命令可用
  • 使用 npm 安装 TypeScript:npm install typescript -g
  • 现在我可以创建.ts 文件,使用TypeScript 语法并使用tsc 命令编译文件

好的,从现在开始一切正常。我正在做的是将 Java 库转换为 TypeScript。但我面临一个问题:Java 库正在使用 Calendar 对象,我需要 TypeScript 中的相同类型的对象。

我搜索了一下,找到了moment.js。我想将该库导入到我的 TypeScript 文件中。

问题:我该怎么做?我在 StackOverflow 上环顾四周,但在每篇文章中,我发现有些东西让我认为这不是我的解决方案,例如:

  • 安装typings / tsd :我读到现在moment.js 现在有一个定义文件(?抱歉,也许这不是一个好词,但它有一个moment.d.ts 文件)
  • 签入random.config.json 文件:我没有这样的配置文件(我猜在NodeJs 中没有,在TypeScript 中我有tsconfig.json 文件,并试图包含moment.d.ts 文件但我没有无法在 TypeScript 中导入它 > "cannot find module moment")
  • npm 安装时刻:我已经完成了,但我没有找到如何在我的项目中包含moment.d.ts 文件。

等等……

我想知道我缺少什么以及如何在我的.ts 文件中包含moment 以便使用它。我可能对这些模块的组织缺乏一些了解,因此欢迎各位解释。

  • NodeJs 版本:7.1.0
  • TypeScript 版本:2.0.10

编辑

经过一番挖掘,我发现我可以使用tsc Test.ts --traceResolution 编译我的.ts 文件,以查看导入是否正确解析。结果:他们是!现在真正的问题是我的 IDE(Visual Studio)不知道moment

问题是我手动创建了每个 .ts 文件,方法是创建一个新文件、更改扩展名并在 Visual Studio 中打开它。也许这就是问题所在?我只是将 Visual Studio 用作带有 IntelliSense 的文本编辑器。我是否必须做一些事情才能让 Visual Studio 了解导入来自 NodeJS ?

【问题讨论】:

  • momentjs.com 上的文档中有一个关于如何在 typescript 中使用 moment 的部分
  • 这就是我所做的,但如前所述,当我想导入 moment 时出现错误 cannot find module "moment"。我也尝试设置编译器选项,但我得到了同样的错误。

标签: node.js visual-studio typescript momentjs


【解决方案1】:
  1. 您不必安装 moment.js 接口,因为它提供了自己的类型定义。
  2. 在 typescript 中导入 moment.js(你是对的)。

    import * as moment from 'moment';

  3. 在打字稿中使用 moment.js

    var momentObject: moment.Moment

    momentObject.something()(例如:momentObject.add(..))

【讨论】:

  • 我终于能够在我的解决方案中使用 moment.js,但我必须做一些更改。我上的每一节课我都把它们放在一个namespace 中,但后来我无法导入moment。我只需要将namespace MyNamespace { export class MyClass { ... }} 更改为export class MyClass { ...}。你知道为什么吗 ?然后我会让你写一个我很乐意接受的答案,谢谢
猜你喜欢
  • 1970-01-01
  • 2019-01-24
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 2017-12-10
相关资源
最近更新 更多