Tsickle:连接TypeScript与Closure Compiler的桥梁

Tsickle:连接TypeScript与Closure Compiler的桥梁

tsickleTsickle — TypeScript to Closure Translator项目地址:https://gitcode.com/gh_mirrors/ts/tsickle

Tsickle 是一个强大的工具,它能将TypeScript代码转换为符合Google Closure Compiler要求的形式。这意味着你可以利用TypeScript的强大类型系统编写源码,然后借助Closure Compiler进行打包和优化,从而在保持代码整洁的同时,享受性能优化的优势。

项目介绍

Tsickle的主要任务是将源码中的各种元素转换成Closure Compiler可以识别的形式,如插入兼容的JSDoc注解,将ES6模块转化为goog.module模块,生成externs.js文件,处理类成员变量的类型声明,转换export * from ...语法,以及将TypeScript枚举转换为Closure接受的格式等。 Tsickle的目标是在保持源码合法性的前提下,使之适应Closure Compiler的编译需求,即使最终输出的代码可能不是那么“美观”。

重要提示:不提供全面支持 虽然Google内部广泛使用Tsickle(包括在Angular应用中),但对外部其他JavaScript生态系统,我们并没有提供官方支持。

使用方法

Tsickle是一个库,设计用于与其他处理TypeScript和Closure Compiler的程序集成。例如:

  1. 在Google内部,Tsickle被嵌入到Bazel构建系统中。这部分代码作为开放源代码发布,作为Bazel的Node.js/TypeScript构建规则的一部分。
  2. tscc是一个封装了Tsickle和Closure Compiler的工具,并且能够与rollup配合工作。
  3. 我们还发布了一个简单的演示程序,位于demo/子目录下。

设计细节

输出格式

为了满足Closure Compiler的要求,Tsickle可能会产生一些人类阅读起来不太友好的代码。例如,它会生成特定于Closure的类型语法,如{!Foo}表示非空的Foo类型,以及使用@typedef标记的类型别名。此外,它还会将模块以Closure的goog.module格式导出,这种格式与ES模块类似但并不完全相同。

TypeScipt与Closure的差异

尽管TypeScript和Closure有很多相似之处,但在某些地方仍存在差异。Tsickle尽量隐藏这些差异,但是用户还是需要了解以下几点:

declare

.d.ts文件中的任何声明,以及带有declare标签的声明,会被Tsickle识别为应当在Closure编译过程中保留名称的元素。当对象从外部导入或传出程序时,这个特性尤为重要,因为它确保字段的具体字符串名称不会被重命名。

出口装饰器

带有@ExportDecoratedItems注释的装饰器表示其修饰的元素的名称应通过Closure编译过程得到保留,并应用@export标签。

开发者信息

  • 需要安装Node.js和Yarn。可以通过操作系统包管理器或者按照npmyarnpkg官网说明来安装。
  • 运行yarn以安装依赖。
  • 使用yarn build构建代码,tsc --watch进行持续构建,yarn test运行单元测试、端对端测试并检查代码风格。

总结

Tsickle是一个强大的工具,可以帮助开发者充分利用TypeScript的强类型特性,同时受益于Closure Compiler的优化功能。无论是Google内部的大型项目,还是小型独立项目,Tsickle都是一个值得信赖的中间件。然而,请务必注意,如果在非Google生态系统的环境中使用,可能需要额外的技术支持和适配工作。

tsickleTsickle — TypeScript to Closure Translator项目地址:https://gitcode.com/gh_mirrors/ts/tsickle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吕真想Harland

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值