"Optional Module Loading and Other Advanced Loading Scenarios"に記載されているのと同様のことをしたいのですが、動作しません。私はこのようなmodule1.ts
をコンパイルし、今Typeによってのみ参照されるTypeScriptモジュールは、まだランタイム依存関係です
export class Module2 {
public someMethod(s:string):boolean{ return true; } /* ... */
}
:
module1.ts:
// declare function require(moduleNames: string[], onLoad: (...args: any[]) => void): void;
/// <reference path="./require.d.ts"/>
import { Module2 as M2 } from "./module2";
var needsLazyLoading:boolean = false;
if (needsLazyLoading) {
require(["./module2"], (Module2: typeof M2) => {
let module2 = new Module2();
if (module2.someMethod("...")) { /* ... */ }
});
}
module2.ts
は、これら2つのファイルを考えてみましょう
tsc --module amd --outFile moduleFull1.js module1.ts
私が上に引用した記事によると、moduleFull1.js
にはModule2
への参照はありません("Use case: Lazy loading"でも同じです)。
しかし、それは
moduleFull1.js ...あります:(遅延ロードの目的に反し)
define("module2", ["require", "exports"], function (require, exports) {
"use strict";
var Module2 = (function() {
function Module2() {
}
return Module2;
}());
exports.Module2 = Module2;
});
define("module1", ["require", "exports"], function (require, exports) {
"use strict";
});
。
これはなぜですか?何か不足していますか?
助けてください。
私のコードを修正し、 "Module2を型名として使用する"ことができますか? –
ハンドブックに記載されている例をmimmicに変更した場合、問題は残ります。Module2は最終ファイルに存在します。 –