如何在TypeScript中正确引用模块?
How do I reference modules in TypeScript correctly?
我完全不明白如何为导入提供模块路径。
大多数时候,当我在Visual Studio 2015中编辑TypeScript时,我得到一条红色的弯弯曲曲的线和一条错误消息,告诉我找不到模块"x"。但是没有智能感知或任何东西来创建正确的模块名称,帮助我找到正确的名称来添加到require调用。
这是我的问题:我写的代码是由不同的HTML页面驻留在不同的目录中使用。我的部分TypeScript代码也驻留在单独的目录中。
那么我应该如何从TypeScript代码中引用所有不同的TypeScript/JavaScript库,以使其最终正确工作?如何在TypeScript中寻址,如何在HTML页面中寻址?
jQuery应该如何适应这一切?引用jQuery的唯一方法是这样写:
import $ = require("jquery");
但是在我的项目中没有这个名字的文件。但是我使用的其他术语(例如:"../../Scripts/jquery-2.1.4")又带回来了那条红色的弯弯曲曲的线。那么这些在运行时应该如何加载呢?
我已经阅读了如何使用jQuery和RequireJS配置选项,但我仍然不明白。
当涉及到部署事物时,它变得特别难以理解。因为我将使用".min.js"文件,驻留在另一个目录中。
当你写:
import $ = require("someModule");
TypeScript只检查一个存在的文件,如果它是一个TypeScript文件。对于JavaScript库,您应该手动或通过NuGet(例如JQuery.d.ts)将定义文件添加到项目中。
不幸的是,TypeScript不支持环境模块的相对路径(例如../../Scripts/jquery-2.1.4
),所以你应该映射位于不同路径中的模块:
require.config({
paths: {
"jquery": "Scripts/jquery-2.1.4"
}
...
}
对于部署,你可以使用RequireJS Optimizer。
实际上没有必要使用RequireJS (AMD模块)。您可以使用内部模块(即模块系统"None")。这样就不需要import = require
了。你应该在你的HTML中按正确的顺序引用脚本,从必需到依赖。
Update:如果你仍然想使用RequireJS的相对路径,你应该移动jquery.d.ts
到实际的jquery.js
文件旁边,并在文件的末尾更改模块声明:
declare module "jquery" {
export = $;
}
只是:
export = $;
- 如何引用HTML中节点模块中的js文件
- 为什么“exports”在nodejs模块中引用与“this”相同的对象
- Typescript中的引用和模块
- 我应该如何在JS中使用揭示模块模式,传递引用,并避免加载顺序问题
- 从模块内部引用特定的表单元素
- 在模块之间传递对象引用
- 如何在填充后从我的模块引用 PreloadJS
- 在打字稿中隐式引用另一个内部模块
- AngularJS - 如何从ui-router引用子模块控制器
- 未捕获的引用错误:未定义模块 A
- 模块构建失败:引用错误:[BABEL] 未知选项:base.stage
- 引用下划线模板中 require 模块内保存的枚举值
- javascript sandbox 一个模块,用于防止引用 Window
- 如何在表达式中引用模块变量
- 如何在React Component NPM模块中引用图像
- Typescript-不同文件中的模块函数引用-“;找不到符号“;
- 如何引用属于某个模块的文件
- System.NullReferenceException:对象引用未设置为对象的实例.Dotnetnuke模块创建
- Angular在将脚本引用为ES6模块时找不到模块
- 如何在TypeScript中正确引用模块?