在2024年6月6日,TypeScript团队宣布发布TypeScript 5.5 RC(Release Candidate)。作为开发者,了解新版本的功能和改进将有助于更好地利用TypeScript来编写和维护代码。本文将从开发者的角度介绍TypeScript 5.5 RC的主要特性和改进。
新特性
推断类型谓词 (Inferred Type Predicates)
在之前的版本中,TypeScript在处理数组类型推断时存在一定的限制。比如,以下代码在之前的版本中会产生错误:
function makeBirdCalls(countries: string[]) {
const birds = countries
.map(country => nationalBirds.get(country))
.filter(bird => bird !== undefined);
for (const bird of birds) {
bird.sing(); // error: 'bird' is possibly 'undefined'.
}
}
尽管已经过滤掉了所有的undefined
值,TypeScript仍然无法正确跟踪类型变化。在TypeScript 5.5中,推断类型谓词功能增强,使得上述代码不再报错。
常量索引访问的控制流缩小 (Control Flow Narrowing for Constant Indexed Accesses)
在TypeScript 5.5中,常量索引访问的控制流分析得到了改进。这个改进使得类型检查更加严格和准确,减少了不必要的类型错误提示。
JSDoc中的类型导入 (Type Imports in JSDoc)
TypeScript 5.5支持在JSDoc中使用@type
导入类型,这有助于在JavaScript文件中更好地使用TypeScript的类型检查功能。例如:
/** @type {import("./types").MyType} */
let myVar;
这使得在纯JavaScript项目中也能享受到TypeScript的类型系统。
正则表达式语法检查 (Regular Expression Syntax Checking)
TypeScript 5.5引入了对正则表达式的语法检查。这一功能在编译时就能捕捉到正则表达式中的语法错误,减少运行时错误的发生。这一功能虽然在严格模式下更为严格,但也进行了优化,使其在宽松模式下更为宽容。
支持新的ECMAScript Set方法 (Support for New ECMAScript Set Methods)
新版本的TypeScript支持ECMAScript最新引入的Set方法,如addAll
和deleteAll
。这使得开发者在使用这些新方法时能够获得更好的类型提示和检查支持。
性能优化和改进
声明文件生成时的包依赖处理 (Consulting package.json Dependencies for Declaration File Generation)
TypeScript 5.5改进了在生成声明文件时对package.json
中依赖的处理,使其更加智能和高效。
编辑器和监视模式的可靠性改进 (Editor and Watch-Mode Reliability Improvements)
在编辑器集成和监视模式下,TypeScript 5.5增加了许多新功能和修复,使得使用体验更加可靠。这包括修复配置文件中的错误刷新问题,以及更好地处理文件删除后立即写入的情况。
性能和体积优化 (Performance and Size Optimizations)
TypeScript 5.5在性能和体积方面也进行了优化。通过减少多态性和优化上下文类型的缓存,大大提升了编译速度。例如,在编译TypeScript自身的代码时,通过优化,可以将编译时间减少250毫秒。