如何正确引用TypeScript中的模块?

时间:2015-08-10 20:56:29

标签: javascript jquery requirejs typescript visual-studio-2015

我绝对不了解如何为导入工作提供模块路径。

大部分时间我在Visual Studio 2015中编辑TypeScript时,我得到一条红色波浪线和一条错误消息,告诉我该模块" x"无法找到。但是没有IntelliSense或者无论如何创建正确的模块名称,这有助于我找到要添加到require调用的正确名称。

这是我的问题:我编写的代码已被不同目录中的不同HTML页面使用。我的TypeScript代码的一部分也驻留在不同的目录中。

那么我应该如何从TypeScript代码中引用所有不同的TypeScript / JavaScript库,以使其最终正常工作?如何在TypeScript中解决它,以及如何在我的一个HTML页面中调用它时如何解决它?

jQuery应该如何适应这一切?引用jQuery的唯一方法是编写:

import $ = require("jquery");

但是我的项目中没有这样的文件名。但是我使用的任何其他术语(例如" ../../ Scripts / jquery-2.1.4")再次带回红色波浪线。那么这一切应该如何在运行时加载?

我已阅读How to Use RequireJS with jQueryRequireJS Configuration options,但我仍然不理解。

在部署内容时变得特别难以理解。因为那时我会使用" .min.js"文件,驻留在另一个目录中。

1 个答案:

答案 0 :(得分:1)

当你写:

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模块)。您可以使用internal modules(即模块系统“无”)。因此不需要import = require。您应该按照正确的顺序引用HTML中的脚本,从需要到依赖。

更新:如果您仍想使用RequireJS的相对路径,则应将jquery.d.ts移到实际的jquery.js文件旁边,并在文件更改模块声明的末尾:

declare module "jquery" {
    export = $;
}

只是:

export = $;