【问题标题】:Trouble using modules in typescript在打字稿中使用模块时遇到问题
【发布时间】:2018-06-13 19:35:43
【问题描述】:

我终于开始学习 Typescript,但遇到了很多问题。我有像jquerypixijs 这样的库工作,因为它们包含类型定义(npm install --save @types\jquery 等)。 但是,我在尝试使用 momentjs 时遇到了问题。根据时刻的documentation,它说只需使用npm 安装moment 并导入它。但是,这是行不通的。我已经尝试了几种不同的方法来让它工作,但似乎没有任何工作。

现在我正在使用一个非常基本的 typescript 2.9/AMD 设置。 This project to be specific

使用导入会导致我的整个文件中断,因此这不是一个选项。有没有办法让momentPIXIJquery 一样在全球范围内可用?

感谢任何指导。

【问题讨论】:

标签: typescript momentjs


【解决方案1】:

我认为您的问题有两个不同的方面:

1) 全局变量。

如何在不使用 javascript 模块的情况下将 momentjs 用作全局变量?

是的,这是可能的。请参阅有关“浏览器”用法的文档。 http://momentjs.com/docs/。只需从 CDN 或本地将其缩小的 JS 包含到您的 HTML 中。他们也有使用 requirejs 的文档。

请注意,如果 PIXI 和 JQuery 在全球范围内可用,那么您显然已经在代码中的某个地方执行了此操作(作为脚本标记,作为 AMD 模块要求的副作用或类似的东西)。您提到这是因为这些库具有打字稿定义,但事实并非如此。定义只是定义——它们告诉 Typescript,例如,PIXI.Container 有 addChild 方法,但没有此方法的实际代码。

2) 类型定义。

Momentjs 提供定义https://github.com/moment/moment/blob/develop/moment.d.ts。您可能可以立即下载并使用它。

说了这么多,如果您从头开始,这似乎不是一个好方法。只需抓取 Webpack,将 PIXI、jquery 和其他所有内容安装为 npm 模块,在 Typescript 中使用 ES6 导入将它们导入,然后将所有内容编译成 1 个缩小的 JS 文件。毕竟,您的生产应用程序中不可能有数百个 AMD JS 模块,无论如何您都必须以某种方式将它们捆绑在一起。

【讨论】:

  • 谢谢。这很有帮助,我感谢您写得很好的回复:)
猜你喜欢
  • 2021-10-20
  • 2020-09-25
  • 1970-01-01
  • 2018-06-06
  • 2013-06-14
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多