使用不带require()的typescript模块

时间:2017-06-03 23:20:52

标签: javascript typescript requirejs vue.js

我写了一个需要Vuejs库v2的打字稿2.3 app.ts。 在html文件中手动添加Vuejs脚本src。 我只想用Vuejs进行类型检查! 我希望我只需要像这样引用:

  

///< reference path =“vue.d.ts”/>

但是无法从app.ts访问 Vue 类。

我试图直接导入模块:

  

从“./vue”输入*作为Vue;

这次我必须使用 new Vue.Vue({})来访问该类,但是VS 2017 build。 生成的app.js以 var Vue = require(“./ vue”); 开头。 但是在浏览器中,我遇到了一些错误:

  • 导出参考(通过在.ts
  • 的第1行添加 export = 0; 解决)
  • require不是函数

对于require(),我添加< script src =“Scripts / require.js”>< / script> 但新错误:尚未加载上下文

我尝试使用systemjs而不是require.js,我添加<脚本> System.import( '脚本/ app.js');< / script> 我得到404访问“Scripts / vue”(来自app.js的要求),其余的app.js没有被执行。

注意:我不使用tsconfig.json

我很惊讶因为在我的记忆中,jQuery的引用与typescript 0.9一起使用

我完全迷失了。帮我 !谢谢社区!

1 个答案:

答案 0 :(得分:0)

我通常通过创建globals.d.ts文件解决您遇到的问题,该文件负责设置我的代码所期望的全局环境。在你的情况下像:

import * as _Vue from "vue";

declare global {
    const Vue: typeof _Vue;
}

这使得编译器在全局空间中看到Vue符号,该符号与“vue”模块导出的符号相同。

使用上面的文件,这将编译:

const q = new Vue();

请注意,您必须使用tsconfig.json。即使是空的也行。 (通过“空”,我的意思是一个只包含空JSON结构的文件:{}。)或者您必须列出要编译的所有文件,包括命令行中的globals.d.ts