Импорт модулей и экспорт во время выполнения

#javascript #typescript #es6-modules

#javascript #typescript #es6-модули

Вопрос:

Привет, у меня есть два файла конфигурации, например.:

config-one.ts

 export const FOO = '1';
export const BAR = 1;
  

config-two.ts

 export const FOO = '2';
export const BAR = 2;
  

оба файла импортируются в config.ts.

config.ts

 import * as configOne from './config-one.ts';
import * as configTwo from './config-two.ts';
  

Я хочу в каком-то разделе экспортировать конфигурацию-один или конфигурацию-два, как экспортировано config.ts

 if ( some condition ){
    export configOne;
} else {
    export configTwo;
}
  

использование в другом файле

foo.ts

 import { FOO, BAR } from './config.ts';
  

Возможно ли это в typescript?

Комментарии:

1. export configOne; недопустимо в модулях ES6

Ответ №1:

Динамического импорта достаточно, чтобы выполнить динамический экспорт:

config-one.ts

 export const config1 = "config1";
  

config-two.ts

 export const config2 = "config2";
  

index.ts

 const whatever = true;

const getConfig = () => {
  if (whatever) {
    return import("./config-one");
  }
  return import("./config-two");
};
  

tsconfig

 ...
"moduleResolution": "Node",
"module": "CommonJS",
...
  

пример использования:

 async function main() {
  console.log(await getConfig());
}

main().catch(console.log);