当前位置:  开发笔记 > 编程语言 > 正文

在TS 1.7中重新导出ES6模块?

如何解决《在TS1.7中重新导出ES6模块?》经验,为你挑选了1个好方法。

我在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规范的真正意义,并且没有一个真正起作用.

这样做汇总的正确方法是什么?我是否只是走错路径将文件拆分成文件?名称空间在这里更合适吗?



1> C Snover..:

使用module.exportsES模块时不应该使用; 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();

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有