「log.ts」ファイル内の単純な関数をエクスポートしています。
export function message(s : string) {
console.log(s);
}
これは、同じディレクトリ内のファイル ("MyController.ts") によってインポートされます。
import log = module("./log");
class MyController {
a : string = "aaa";
constructor () {
log.message("hello world");
}
}
コンパイルすると、次の JS が得られます。
define(["require", "exports", "./log"], function(require, exports, __log__) {
var log = __log__;
var MyController = (function () {
function MyController() {
this.a = "aaa";
log.message("hello world");
}
return MyController;
})();
})
//@ sourceMappingURL=MyController.js.map
この定義関数は MyController を返す必要があります。そうでないため、このスニペット内のコールバックはコントローラー パラメーターに対して何も取得しません。
require(["MyController"], function (controller) {
theRoute.controller = controller;
defer.resolve();
$rootScope.$apply();
});
define の呼び出し内に return を手動で追加することでこれを修正できますが、TS コンパイラによって JS が出力されているため、これは適切な回避策ではありません。
私は何か間違ったことをしていますか、それとも typescript のバグですか?