我终于学习了Typescript,但是我遇到了很多问题。我有jquery
和pixijs
这样的库,因为它们包含类型定义(npm install --save @types\jquery
等)。
但是,我遇到了一个试图使用momentjs
的问题。根据时刻documentation,它只是使用npm
来安装moment
并导入它。但是,这不起作用。我已经尝试了几种不同的方法来使它工作,但似乎没有任何效果。
现在我正在使用非常基本的打字稿2.9 / AMD设置。 This project to be specific
使用导入会导致整个文件中断,因此不是一个选项。无论如何,moment
和PIXI
是全球可用的Jquery
吗?
感谢任何指导。
答案 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模块,无论如何,您都必须以某种方式捆绑它们。