TypeScript 发布 4.8 候选版本,含重大更新

2022年8月16日 417点热度 0人点赞 0条评论

图片图片


TypeScript 的下一个版本 4.8 当前处于候选发布阶段(RC版本)。


“从现在到 TypeScript 4.8 的稳定版本,我们预计除了关键的错误修复之外不会有进一步的变化,” TypeScript 高级项目经理 Daniel Rosenwasser 在博客中说道。


这个阶段将很短,根据迭代计划:“最终测试构建”将在本周晚些时候发布,最终版本将在 8 月 23 日左右正式发布。


从 4.8 Beta 版本以来没有添加太多内容,主要特性有一个新的 TS 服务器首选项,可以从用于代码完成的自动导入列表中排除模块或库。


其它变化之一是 TypeScript 团队称之为“充其量是 JavaScript 开发人员早期的手枪,最坏的情况是生产代码中的错误”。


这是将对象与数组文字进行比较的地方。代码如下:

var things: any[] = Array();
if (things == []) {
//数组为空吗?
}

类似的代码在 Python 中也可以工作,但 JavaScript 仅在对象指向同一个实例时才认为它们是相等的。


TypeScript 4.8 现在将报告此代码错误:“此条件将始终返回 'false',因为 JavaScript 通过引用而不是通过值来比较对象。”


图片

如果将对象与文本进行比较,TypeScript 现在会报告错误


根据 TypeScript 团队的说法,“由于类型系统更改的性质”,TypeScript 更新中的重大更改几乎是无法避免的。


TypeScript 的目的是在部署之前更容易捕获错误,因此 4.8 中的“正确性修复”,包括上述更改,即使它们似乎引发了新错误,对于开发者和项目来说也是一件好事。


谷歌内部软件团队在测试版报告中表示,“需要对我们的 TypeScript 代码进行一些更改才能使其与 TypeScript 4.8 一起编译”,尽管只有一小部分库受到影响。“我们仍支持TS改进”。


谷歌团队表示实测了关于对象与数组、文本的比较:“我们看到了类似于发布公告中提到的类型错误”,并且“我们希望向任何类型添加强制转换以消除错误,并随着时间的推移应用适当的修复”。

尽管在代码中添加“as any” 会起作用,但这样做会留下潜在的Bug,因此不建议这样做——尽管有谷歌的情况下,这个问题也只影响到使用的 0.006% 的库。


作者:场长

相关阅读:


TypeScript 4.5 发布;Android 12 会是最后一次更新吗?

建议退役!JSON之父:JavaScript已阻碍进步

在 Linux 上搭建一个可重复的前端开发环境

图片

81800TypeScript 发布 4.8 候选版本,含重大更新

这个人很懒,什么都没留下

文章评论