jQuery やアンダースコアなど、TypeScript を使用して AMD モジュールの依存モジュールを定義するにはどうすればよいですか。JavaScript を使用して、たとえば次のようにします。
define('moduleA',
['jquery', 'underscore'], function ($, _) {
}
});
TypeScriptコンパイラがこのコードを生成するようにするにはどうすればよいですか。
jQuery やアンダースコアなど、TypeScript を使用して AMD モジュールの依存モジュールを定義するにはどうすればよいですか。JavaScript を使用して、たとえば次のようにします。
define('moduleA',
['jquery', 'underscore'], function ($, _) {
}
});
TypeScriptコンパイラがこのコードを生成するようにするにはどうすればよいですか。
コンパイラ(0.8)の現在の実装では、求めているものを実現する方法は次のとおりです。
test.ts:
import jquery = module("jquery");
import underscore = module("underscore");
export module A {
console.log(jquery.$ + underscore._);
}
jquery.ts:
export var $ = null;
underscore.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
それを でコンパイルすることです。基本的に、次の 3 つのファイルが必要です。jquery
underscore
-module amd
moduleA.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";
}
これら 3 つのファイルを でコンパイルする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
モジュールをロードできるようになります。