是否可以在单个语句中从另一个模块导出 * 和默认值?

Is it possible to export * and default from another module in a single statement?

情况

我有一个模块 moduleA,其中包含 default 和名为 exports:

// Module A
export {
  A1 as default,
  A2,
  A3,
};

在另一个模块 moduleB 中,我想导出(聚合)来自 moduleA 的所有内容(包括 default 和命名导出)。我这样做了:

// Module B
export * from "moduleA";

然后在另一个模块 moduleC 中,我导入了 moduleBdefault 导出,我希望它是模块 A 的 default 导出:

// Module C
import ModuleB from "moduleB";

但是 ModuleB 解决了 undefined

我通过将模块 B 更改为以下来修复此问题,它按预期工作:

// Module B
export { default } from "moduleA";
export * from "moduleA";

问题

我能否以某种方式在一行中导出模块 B 中的内容?类似下面的内容(这是无效的语法)。

export { default, * } from moduleA;

旁白:为什么export * from <module>不导出defaultimport/export?

如果我对你的问题的理解正确,我相信下面的代码片段就是你正在寻找的模式:

// Module A
export {
  A1 as default,
  A2,
  A3,
};


// Module B
export * as moduleA from 'moduleA;'


// Module C
import * as moduleB from 'moduleB;' /* This is known as a 'namespace import' */

你不能。

根据 ecma 规范,export * from "moduleA"; 不会从引用的模块重新导出默认绑定。

There's a proposal,目前处于第一阶段,可能会让您做到这一点。