Typescript - 导入仅扩展全局变量的模块

时间:2015-10-01 11:55:56

标签: module typescript external require amd

在需要bootstrap的JS模块中,我目前正在编写

define(["dep1", "dep2", "bootstrap"], function(dep1, dep2) { });

即:引导依赖项没有变量,因为该模块仅扩展全局JQuery对象而不导出任何内容。

如何在Typescript中实现相同的行为?我试过了

import dep1 = require("dep1");
import dep2 = require("dep2");
import bs = require("bootstrap");

但生成的JS就像

define(["require", "exports", "dep1", "dep2"], function($, exports, dep1, dep2) { });

并且未加载bootstrap模块。

提前致谢

3 个答案:

答案 0 :(得分:1)

解决方案(需要Typescript 1.5 +):

import $ = require("jquery");

添加

///<amd-dependency path="bootstrap"/>

路径是文件的相对路径,或者是您在require.config中定义的require路径({paths:...}) 这是因为此标记中path属性的内容将字面上粘贴在生成的js文件的define语句中!

答案 1 :(得分:0)

试试这个:

import = "bootstrap";

答案 2 :(得分:-1)

发生这种情况是因为TypeScript编译器找不到名为bootstrap的模块,这就是为什么省略这个模块的原因。

尝试整合您的项目bootstrap.d.ts。或者使用名称bootstrap声明自己的模块,然后导入它。

This example表示已省略未声明的模块

更新

我刚刚发现bootstrap.d.ts并发现它支持AMD模块,可以在import中使用

另见

  1. Using d.ts