Во-первых, чтобы избежать ошибок компиляции TypeScript, позвольте мне показать пример динамической загрузки в JavaScript.
_LoadedOnDemandModule.js
const DYNAMICALLY_LOADED_CONST_FROM_JS_MODULE_BY_DEFAULT = 'I was dynamically loaded from JS module by default!';
export default DYNAMICALLY_LOADED_CONST_FROM_JS_MODULE_BY_DEFAULT;
export const DYNAMICALLY_LOADED_CONST_FROM_JS_MODULE = 'I was dynamically loaded from JS module!';
index.js
loadDataOnDemand();
async function loadDataOnDemand() {
const MODULE = await import('./_LoadedOnDemandModule');
}
Если попытаться console.log(MODULE)
, это даст:
![enter image description here](https://i.stack.imgur.com/ni7UD.png)
Module {default: "I was dynamically loaded from JS module by default!", __esModule: true, Symbol(Symbol.toStringTag): "Module"}
DYNAMICALLY_LOADED_CONST_FROM_JS_MODULE: (...)
default: "I was dynamically loaded from JS module by default!"
Symbol(Symbol.toStringTag): "Module"
__esModule: true
get DYNAMICALLY_LOADED_CONST_FROM_JS_MODULE: ƒ ()
__proto__: Object
Ниже решение для TypeScript работает для меня, но я должен подтвердить от профессионалов, здесь есть некоторые скрытые ошибки на некорректность.
loadDataOnDemand1();
type TestType = {
default: string;
DYNAMICALLY_LOADED_CONST_FROM_JS_MODULE: string;
}
async function loadDataOnDemand1(): Promise<void> {
const MODULE: TestType = await import('./_LoadedOnDemandModule');
}