如何使用 TypeScript 在 AMD 模块中定义依赖模块,包括例如 jQuery 和下划线。例如,我使用 JavaScript 是这样的:
define('moduleA',
['jquery', 'underscore'], function ($, _) {
}
});
如何做到这一点,以便 TypeScript 编译器生成此代码。
如何使用 TypeScript 在 AMD 模块中定义依赖模块,包括例如 jQuery 和下划线。例如,我使用 JavaScript 是这样的:
define('moduleA',
['jquery', 'underscore'], function ($, _) {
}
});
如何做到这一点,以便 TypeScript 编译器生成此代码。
使用编译器的当前实现(0.8),实现您所寻求的方法如下。
测试.ts:
import jquery = module("jquery");
import underscore = module("underscore");
export module A {
console.log(jquery.$ + underscore._);
}
jquery.ts:
export var $ = null;
下划线.ts:
export var _ = null;
如果您使用模块开关编译 test.ts:
tsc --module AMD test.ts
它将为您生成以下 JS 文件:
define(["require", "exports", "jquery", "underscore"], function(require, exports, __jquery__, __underscore__) {
var jquery = __jquery__;
var underscore = __underscore__;
(function (A) {
console.log(jquery.$ + underscore._);
})(exports.A || (exports.A = {}));
})
请注意,如果您将 import 语句放入模块中,它将由于错误而正确记录 codegen。该团队目前正在对该项目进行修复,但希望这不会阻止您。
由于编译器中的错误,这目前在 typescript 中无法正常工作(请参阅stackoverflow)。你需要做的是定义一个moduleA
导入jquery
和的模块,underscore
然后用-module amd
. 基本上,您需要以下三个文件:
模块A.ts
export module moduleA {
import jquery = module("jquery");
import underscore = module("underscore");
console.log(jquery.jquery);
console.log(underscore.underscore);
}
jQuery.ts
export module jquery {
var jquery = "jquery";
}
下划线.ts
export module underscore {
var underscore = "underscore";
}
编译这三个文件tsc -module amd
会产生以下代码moduleA.js
:
define(["require", "exports"], function(require, exports) {
(function (moduleA) {
var jquery = __jquery__;
var underscore = __underscore__;
console.log(jquery.jquery);
console.log(underscore.underscore);
})(exports.moduleA || (exports.moduleA = {}));
})
就像我上面说的,由于编译器中的一个错误,这段代码实际上是不正确的,并且会在运行时抱怨丢失__jquery__
。但是,一旦修复了这个错误,amd
加载器node.js
应该能够加载模块。