宣布 TypeScript 5.5 - TypeScript

今天发布了 TypeScript 5.5 版本,主要内容如下:

  • 使用方式:通过 npm 安装 npm install -D typescript 或通过 NuGet 安装 Microsoft.TypeScript.MSBuild 来开始使用。
  • 新特性

    • 推断类型谓词:TypeScript 5.5 可推断 filter 函数的类型谓词,使代码更精确,如处理 undefined 情况更方便,但可能会导致现有代码出错,需使用显式类型注解。
    • 常量索引访问的控制流缩小:当 objkey 都是常量时,TypeScript 能缩小 obj[key] 的类型。
    • JSDoc @import 标签:支持新的 @import 标签,用于在 JavaScript 文件中进行类型检查,避免不必要的导入,提高开发效率。
    • 正则表达式语法检查:对正则表达式进行基本语法检查,能捕获常见错误,如非法的转义字符、不存在的反向引用等,但仅对正则表达式字面量有效。
    • 支持新的 ECMAScript Set 方法:声明了新的 Set 类型方法,如 unionintersection 等,用于操作 Set 数据结构。
    • 隔离声明:引入 --isolatedDeclarations 选项,使工具能更高效地生成声明文件,提高编译速度,在某些情况下可并行处理声明文件生成和检查。
    • ${configDir} 模板变量:用于配置文件,解决相对路径问题,使共享配置文件更易使用和移植。
    • 参考 package.json 依赖生成声明文件:在某些情况下更宽松地处理依赖,减少错误提示。
    • 编辑器和监视模式可靠性改进:在 --watch 模式和编辑器集成方面进行了改进,包括正确刷新配置文件错误、更好地处理删除后立即写入、跟踪符号链接的失败解析以及项目引用有助于自动导入等。
    • 性能和大小优化:在语言服务和公共 API 中进行单态化处理,优化控制流节点,对控制流图进行优化,在 transpileModuletranspileDeclaration 中跳过检查,减小 TypeScript 包大小,在声明文件生成中重用节点以及缓存歧视联合的上下文类型等,提高了性能。
    • 更方便的 ECMAScript 模块 API 消费:在 Node.js 中修复了命名导入的问题,使开发人员可以更方便地使用 TypeScript 的 npm 包中的 API。
    • transpileDeclaration API:新增用于生成单个声明文件的 API,在 isolatedDeclarations 模式下可用于并行化声明文件生成。
  • 显著的行为变化

    • 弃用 TypeScript 5.0 中的一些特性,如 charsettarget: ES3 等,在 6.0 版本中这些选项将成为错误。
    • lib.d.ts 变化:对 DOM 类型生成进行了更新,可能影响代码库的类型检查。
    • 对装饰器的解析更严格,现有装饰器可能需要加括号以避免错误。
    • undefined 不再是可定义的类型名,避免与内置类型冲突。
    • 简化参考指令声明生成,不再合成参考指令,除非使用 preserve="true" 属性。
  • 未来计划:下一个版本是 TypeScript 5.6,预计在 2024 年 9 月初发布,可通过安装 nightly 版本或使用 VS Code TypeScript Nightly 扩展来尝试早期版本,具体的迭代计划可在 issue 追踪器上查看。

此版本由 Daniel Rosenwasser 等 TypeScript 团队成员开发,他是 TypeScript 团队的产品经理,致力于提供优秀的开发工具。

阅读 14
0 条评论