この ts モジュールがある場合:
export function say(){
console.log("said");
}
amd オプションを使用してコンパイルすると、ts クライアントから非常に簡単に使用できます。
import foo = module("tsmodule")
foo.say();
export var x = 123;
ただし、ts モジュールに相当する JavaScript がある場合:
define(["require", "exports"], function(require, exports) {
function say() {
console.log("said");
}
exports.say = say;
})
安易に使う方法はありません。最も簡単な解決策:
// of course you can use .d.ts for requirejs but that is beside the point
declare var require:any;
// will fail with error module has not been loaded yet for context
// http://requirejs.org/docs/errors.html#notloaded
var useme = require("jsmodule")
useme.say();
export var x = 123;
import foo = module("tsmodule")
foo.say();
エラーhttp://requirejs.org/docs/errors.html#notloadedが原因で失敗します。生成された typescript の define 呼び出しに「jsmodule」が渡されなかったためです。
私が持っている2つの回避策
- インポート/エクスポートを使用しないでください (言語機能が失われます)
- require([]) を使用します (require([]) 呼び出しに依存するものはまだエクスポートできません)
制限があります: https://github.com/basarat/typescript-requirejs。別の方法はありますか?そうでない場合は、ここで投票できます: https://typescript.codeplex.com/workitem/948 :)