首页 > 解决方案 > 在运行时导入模块和导出

问题描述

您好我有两个配置文件,例如:

config-one.ts

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

配置-two.ts

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

这两个文件都导入到 config.ts 中。

配置文件

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

我想在某些情况下导出 config-one 或 config-two 就像config.ts导出的那样

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

在其他文件中使用

脚.ts

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

在打字稿中可能吗?

标签: javascripttypescriptes6-modules

解决方案


动态导入足以使动态导出发生:

config-one.ts

export const config1 = "config1";

配置-two.ts

export const config2 = "config2";

索引.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);

推荐阅读