在 TS 1.7 中重新导出 ES6 模块?
Re-exporting ES6 modules in TS 1.7?
我有点迷失在 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 问题讨论了各种方法,包括使用 export import * from './test1'
的旧黑客,但他们似乎都在争论 ES6 规范的真正含义,而 none 确实有效。 .
像这样进行汇总的正确方法是什么?我只是沿着错误的路径将模块拆分为多个文件吗?名称空间在这里更合适吗?
看起来您无法使用 * 导出模块中的所有内容,即使您使用 * 作为 localModuleName 也是如此。
相反,您必须命名组合模块从其他模块导出的内容。
// combined.ts
export {test1, test3} from './test1';
export {test2} from './test2';
你不应该在使用 ES 模块时使用 module.exports
; 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();
我有点迷失在 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 问题讨论了各种方法,包括使用 export import * from './test1'
的旧黑客,但他们似乎都在争论 ES6 规范的真正含义,而 none 确实有效。 .
像这样进行汇总的正确方法是什么?我只是沿着错误的路径将模块拆分为多个文件吗?名称空间在这里更合适吗?
看起来您无法使用 * 导出模块中的所有内容,即使您使用 * 作为 localModuleName 也是如此。
相反,您必须命名组合模块从其他模块导出的内容。
// combined.ts
export {test1, test3} from './test1';
export {test2} from './test2';
你不应该在使用 ES 模块时使用 module.exports
; 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();