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

How do I reference modules in TypeScript correctly?

本文关键字:引用 模块 TypeScript      更新时间:2023-09-26

我完全不明白如何为导入提供模块路径。

大多数时候,当我在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 = $;