从技术上讲,您可以从 ES6 输出tsc
并立即将其通过管道传递给 Closure Compiler,因为后者被指定接受 JS 作为输入。我们已经在很多地方这样做了,例如。使用闭包编译器编译的 Angular 应用程序采用 rxjs 库分发并将其包含在闭包包中。见https://github.com/angular/closure-demo
在实践中,我们找到了一些理由在 Closure 看到之前使用 tsickle 之类的东西来转换 JS。
- 枚举发射在闭包(或汇总 IIUC)中不起作用
- Closure 对 ES6 有一些限制,例如它目前不支持
export *
- tsickle 将其重写为export {each, visible, symbol}
- 添加 JSDoc 注释有助于闭包理解代码的结构,这可以改进优化并减少它打印的警告数量。
我们目前的计划是将 tsickle 分解为多个 TS 2.3 的 emit 转换,然后我们可以更清楚哪些转换实际上需要在编译器中启用。
添加类型是可选的。如果您关闭 tsickle 的类型化模式,我们将只打印{?}
类型。但是,如果您想使用闭包 JS 代码的 TypeScript 输出,那么您会希望闭包类型检查器知道类型。
如果您喜欢新的构建工具,我们将在某个时候将 tsickle 构建到https://github.com/bazelbuild/rules_typescript中的 Bazel 工具链中。同时,您可以为 Tsickle 的 main 提交功能请求以支持更多命令行标志。(但我认为 Lucidchart 已经维护了 Tsickle 的一个分支?)