在ES2015中,可以将整个模块作为一个对象导入,其属性是该模块的导出内容:
import * as name from 'module';
我发现这个对于命名空间非常有用,而且我一直在使用它。
同时也可以重新导出其他模块的导出内容:
export { name } from 'module'; // selectively
export * from 'other-module'; // indiscriminately
现在我正在尝试以这种方式编写具有命名空间的库。将所有内容收集到顶层模块中的直观方法是这样的:
export * as name from 'module';
但是这似乎行不通;Babel和Rollup都拒绝它。
我可以将模块作为对象导入,通过迭代其键创建克隆,并将其导出,但那只会成为一个普通的动态对象,因此我将失去Rollup提供的巨大优势。
那么,使用声明性模块语法真的没有办法做到这一点吗?对我来说,似乎没有借口。
export * as name from 'module';
实现什么目的。你打算如何使用这样的导出方式?导入*
总是需要命名空间as X
,因此无论你在导出语句中指定什么名称都是无关紧要的——对吗? - user663031name
是模块对象导出的名称。例如,如果模块“abc”包含export * as xyz from 'xyz'
,并且你使用import * as abc from 'abc'
导入它,那么你将能够通过abc.xyz
访问 "xyz" 的导出内容。 - Permutator