麻烦在打字稿中使用模块

时间:2018-06-13 19:35:43

标签: typescript momentjs

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

现在我正在使用非常基本的打字稿2.9 / AMD设置。 This project to be specific

使用导入会导致整个文件中断,因此不是一个选项。无论如何,momentPIXI是全球可用的Jquery吗?

感谢任何指导。

1 个答案:

答案 0 :(得分:1)

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

1)全局变量。

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

是的,有可能。请参阅有关“浏览器”用法的文档。 http://momentjs.com/docs/。只需将其缩小的JS从CDN或本地包含到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 import导入它们,然后将所有内容编译为1个缩小的JS文件。毕竟,您的生产应用程序中不能包含数百个AMD JS模块,无论如何,您都必须以某种方式捆绑它们。