モジュールの種類によって実装が異なりますが、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
先頭にあるステートメントは inert であり、条件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());
}
});