+8613426109659
webmaster@21cto.com

TypeScript 7编译速度可达10倍,微软定调6.0为最后JavaScript版

图片

微软的TypeScript团队最近公布了他们的最新进展,他们正在开发的代号为Corsa的TypeScript 7工具链已经到了最后阶段。他们说,这个新版本的编译器和语言服务在真实项目中的兼容性和稳定性已经差不多可以用了。而且在处理大型代码库时,编译速度提升了将近10倍!他们还宣布,TypeScript 6.0将会是最后一个用JavaScript来实现的版本,之后他们将把重点放在用Go语言来实现的编译器和语言服务上。

微软已经通过VS Code的原生预览扩展套件发布了新的TypeScript语言服务。这个新服务支持代码自动完成、定义和引用导航、重命名、签名说明等核心功能,并且可以在包含项目引用的TypeScript和JavaScript代码库中正常使用。微软表示,他们把语言服务内部改写成了使用共享内存的并行架构,这样不管是大项目还是小项目,都能减少内存使用和加载时间,还能改善之前原生预览偶尔不稳定的问题。

这次TypeScript原生化的主要重点是性能。微软拿现有的JavaScript版编译器tsc和Go语言实现的tsgo做了个完整的编译时间对比,结果显示tsgo的速度大约是tsc的7到10倍。即使这些数字是在没有开启--incremental增量编译功能的情况下测得的,完整重新编译的时间还是大大缩短了。

图片

微软明确表示,TypeScript 6.0将会是最后一个基于现有JavaScript代码库(Strada)的版本,他们不再计划发布6.1版本。之后只有在出现安全问题、重大错误,或者和7.0版本的兼容性高度相关的情况下,才会发布6.0.x的修补版本。

不过,目前原生编译器还有一些限制。TypeScript 7的JavaScript输出功能还没有完全覆盖旧的降级能力,现在只能降级到es2021这个目标。而且它还不能处理装饰器(Decorators),旧版编译器API在TypeScript 7上也不能用,相关工具还得依赖6.0提供的API。

另一方面,TypeScript 7对JavaScript注释中的结构化标记JSDoc的类型检查做了重新设计,删掉了一些过去比较宽松或者用得不多的模式,比如不再支持@enum和@constructor标记,也不再自动把Object当作any、String当作string,或者自动把某些参数当作可选。也就是说,如果你的项目是用JavaScript和JSDoc维护的,在切换到新编译器后可能会看到更多的错误信息,你可能需要调整注释或者逐步引入TypeScript语法。

作者:场长

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。