是否可以导出“;将*导入为“;ES2015

Is it possible to export the result of "import * as" in ES2015?

本文关键字:导入 ES2015 是否      更新时间:2023-09-26

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

import * as name from 'module';

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

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

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

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

export * as name from 'module';

但这似乎并不奏效;Babel和Rollup都拒绝了。

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

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

不,这只是ES6中遗漏的。不过,有一个第一阶段的提案可以添加这些内容,汇总将考虑实施它

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

import * as name from 'module';
export { name };