TypeScript 5.5 发布:新版本有哪些变化

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

TypeScript 5.5 发布:新版本有哪些变化



2024年6月14日,微软团队正式发布了 TypeScript 5.5——这是 JavaScript 流行的静态类型检查器最重要的版本之一。在新更新中,开发者不仅获得了错误修复,还获得了一系列强大的功能,这些功能简化了代码编写并提高了性能。让我们来看看主要的新特性。



隔离声明 (Isolated Declarations)

TypeScript 5.5 最受期待的新特性是对 Isolated Declarations 模式的实验性支持。现在,编译器可以为每个模块独立生成声明文件 (.d.ts),而无需加载整个项目。这对于大型 monorepo 和构建尤其有用,因为在这些场景中,加速编译器工作变得至关重要。可以通过 tsconfig.json 中的 --isolatedDeclarations 标志启用此模式。



  • 加速构建:隔离的类型编译允许并行化处理并减少等待时间。
  • 方便库作者:包作者现在可以更快地生成最新的类型。
  • 向后兼容:新模式不会破坏现有代码,可以逐步引入。


闭包中的内存泄漏控制

TypeScript 5.5 学会了警告与闭包相关的潜在内存泄漏。编译器现在会分析闭包是否持有对大型对象或 DOM 元素的不必要引用。例如:

function setupHandler() {    const largeData = new Array(1000000).fill('x');    document.getElementById('btn')?.addEventListener('click', () => {        console.log('clicked');        // 以前编译器不会警告 largeData 仍留在内存中    });}

现在,如果 TypeScript 检测到闭包捕获了其中未使用但由于绑定到处理程序而仍留在内存中的变量,它将发出警告。这有助于编写更高效的代码,而无需手动进行性能分析。



改进了数组和解构的类型推断

在新版本中,类型推断机制得到了显著改进。TypeScript 5.5 在数组和元组的解构中能更准确地确定类型。例如,当使用返回元组的 API 时,编译器现在能正确识别每个元素:

function fetchUser() {    return [1, 'Alice'] as const;}const [id, name] = fetchUser(); // id: number, name: string (以前是联合类型)

这消除了多余的手动类型注解,使代码更简洁。



从 JSDoc 自动推断类型

在使用 allowJs 和检查 JavaScript 文件时,TypeScript 5.5 学会了即使在复杂情况下(例如,具有多个参数的回调)也能从 JSDoc 注释中自动推断类型。这对于正在逐步从 JS 迁移到 TS 的项目尤其重要。



其他改进和修复

  • 速度优化:通过缓存中间结果,大型项目的编译速度提升高达 15%。
  • 新标志:--noUncheckedSideEffectImports 禁止未显式使用的无副作用导入。
  • 错误修复:修复了 80 多个与...相关的错误

推荐库