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