実装はモジュールの種類によって異なりますが、TypeScriptでは動的インポートの仕組みがあります。
条件付きモジュールをロードする(AMD用)以下の例:
declare function require(moduleNames: string[], onLoad: (...args: any[]) => void): void;
import * as ModuleAlias from './mod';
const someCondition = true;
if (someCondition) {
require(["./mod"], (module: typeof ModuleAlias) => {
console.log(module.go());
});
}
ファイルの先頭にimport
ステートメントは、不活性であり、モジュールの実際のローディング条件if (someCondition)
ない限り起こりません本当です。
someCondition
を変更し、ネットワークタブへの影響を確認するか、生成されたコードを見ることができます。"./mod"
はdefine
コールには表示されません。非動的なものでは、それはそうです。ダイナミックロードせずに、動的ロード
define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const someCondition = true;
if (someCondition) {
require(["./mod"], (module) => {
console.log(module.go());
});
}
});
で
define(["require", "exports", "./mod"], function (require, exports, ModuleAlias) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const someCondition = true;
if (someCondition) {
console.log(ModuleAlias.go());
}
});