繁体   English   中英

在没有require()的情况下使用打字稿模块

[英]Using typescript module without require()

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

/// <参考路径=“ vue.d.ts” />

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

我试图直接导入模块:

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

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

  • 导出引用(通过添加export = 0来解决在.ts的第1行
  • 要求不是功能

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

我尝试使用systemjs而不是require.js,我添加了<script> System.import('scripts / app.js'); </ script>我得到了404访问“ Scripts / vue”(应用程序中的require)的信息。 js),其余app.js不会执行。

注意:我不使用tsconfig.json

我很惊讶,因为我的记忆中,jQuery的参考与打字稿0.9一起工作

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

我通常通过创建globals.d.ts文件来解决您遇到的问题, 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM