我在TS再出口方面有点迷失.假设我创建了一对测试模块;
test1.ts;
export function test1() { return 'test'; }
test2.ts;
export function test2() { return 'test'; }
我相信我应该能够做到这样的事情;
combined.ts;
export * from './test1'; export * from './test2'; module.exports = { test1: test1, test2: test2 };
但是,没有这样的运气.似乎有很多GitHub问题讨论了各种方法,包括旧的hack使用,export import * from './test1'
但他们似乎都在争论ES6规范的真正意义,并且没有一个真正起作用.
这样做汇总的正确方法是什么?我是否只是走错路径将文件拆分成文件?名称空间在这里更合适吗?
使用module.exports
ES模块时不应该使用; module.exports
是CommonJS模块的一部分,不是EcmaScript模块的一部分.
您正确的汇总模块将只是:
export * from './test1';
export * from './test2';
然后使用汇总:
import * as rollup from './combined';
// or `import { test1, test2 } from './combined'`;
// or any other valid import
rollup.test1();
rollup.test2();
如果要使用额外的命名空间导出test1和test2,请使用export {}
语法:
import * as test1 from './test1';
import * as test2 from './test2';
export { test1, test2 };
然后用法变为:
import * as rollup from './combined';
rollup.test1.test1();
rollup.test2.test2();
as
如果您有一些名称冲突,也可以使用重定向名称,就像import
:
export { test1 as t1 } from './test1';
export { test2 as t2 } from './test2';
然后用法变为:
import * as rollup from './combined';
rollup.t1();
rollup.t2();