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% 的库。
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。