有没有办法重新排列 TypeScript 编译器生成的 JavaScript 个模块?

Is there a way to rearrange JavaScript modules generated by the TypeScript compiler?

我有一个 TypeScript 项目,项目结构的组织方式与典型的 Maven Java 项目没有什么不同。下面大致是项目结构的样子。

.
├── gulpfile.js
├── index.html
├── package.json
├── src
│   ├── entity
│   │   ├── car.ts
│   │   ├── animal.ts
│   └── sevice
│       ├── dao
│       │   ├── cardao.ts
│       │   ├── animaldao.ts
│       └── validator
│           ├── carvalidator.ts
│           └── animalvalidator.ts
├── test
│   ├── entity
│   │   ├── car.spec.ts
│   │   ├── animal.spec.ts
│   └── service
│       └── dao
│           ├── carvalidator.spec.ts
│           └── animalvalidator.spec.ts
├── tsconfig.json
└── webpack.config.js

我能够为 commonjs/webpack、系统和 amd 生成单个 *.js 文件。

然而,在我将这些单个 *.js 文件加载到浏览器中之后(对于 webpack 我只使用 <script> 标签,而对于另一个我使用 SystemJS),我注意到我必须按如下方式实例化我的对象。

var c = new car.Car('chevy', 'traverse', 2017);
var a = new animal.Animal('cat');

我不喜欢在代码 car.Caranimal.Animal 中重复自己。有没有办法让我可以在不改变项目结构的情况下执行以下操作

var c = new entity.Car('chevy', 'traverse', 2017);
var a = new entity.Animal('cat');

当然我可以只创建一个文件,entity.ts 并在该文件中定义 CarAnimal(或所有实体,有很多)。但是对我来说,拥有一个包含很多 类 的长文件只是为了将模块逻辑地组合在一起似乎相当愚蠢。

我天真地尝试将所有 *.ts 文件合并到一个超级 ts 文件中,但这实际上行不通,因为

所以我的问题是,是否有可能将我的 类(按功能,例如实体、dao、验证程序等)逻辑分组到模块中,而不是默认分组(按文件,一个文件我相信实际上是一个模块)?

我希望有一些工具可以实现这一点,但还没有找到任何解决方案。

一个解决方案确实是创建一个用于分组的模块,src/entity.tsre-export 类 来自它:

export { Car } from './entity/car';
export { Animal } from './entity/animal';

另一种可能是使用rollup.js,它似乎能够将多个编译模块组合成一个,但它仅适用于javascript,我没有任何经验。