11

在 ES2015 中,可以将整个模块作为对象导入,其属性是模块的导出:

import * as name from 'module';

我发现这对于命名空间非常有用,并且一直使用它。

也可以重新导出其他模块的导出:

export { name } from 'module'; // selectively
export * from 'other-module'; // indiscriminately

现在我正在尝试以这种风格编写一个具有命名空间的库。在顶层模块中收集所有内容的直观方式如下:

export * as name from 'module';

但这似乎不起作用;Babel 和 Rollup 都拒绝它。

可以将模块作为对象导入,通过迭代其键创建一个克隆,然后导出它,但是它只是一个普通的旧动态对象,所以我会失去 Rollup 提供的巨大优势。

那么,使用声明性模块语法真的没有办法做到这一点吗?在我看来,这似乎没有任何借口。

4

1 回答 1

24

不,这在 ES6 中被忽略了。不过,有一个阶段 1 的提议来添加这些,并且汇总将考虑实施它

在那之前,您将需要使用两个声明和一个本地绑定,尽管不需要克隆对象:

import * as name from 'module';
export { name };
于 2015-11-26T05:10:27.427 回答