今天发布了 TypeScript 5.5 版本,主要内容如下:
- 使用方式:通过 npm 安装
npm install -D typescript
或通过 NuGet 安装Microsoft.TypeScript.MSBuild
来开始使用。 新特性:
- 推断类型谓词:TypeScript 5.5 可推断
filter
函数的类型谓词,使代码更精确,如处理undefined
情况更方便,但可能会导致现有代码出错,需使用显式类型注解。 - 常量索引访问的控制流缩小:当
obj
和key
都是常量时,TypeScript 能缩小obj[key]
的类型。 - JSDoc
@import
标签:支持新的@import
标签,用于在 JavaScript 文件中进行类型检查,避免不必要的导入,提高开发效率。 - 正则表达式语法检查:对正则表达式进行基本语法检查,能捕获常见错误,如非法的转义字符、不存在的反向引用等,但仅对正则表达式字面量有效。
- 支持新的 ECMAScript
Set
方法:声明了新的Set
类型方法,如union
、intersection
等,用于操作Set
数据结构。 - 隔离声明:引入
--isolatedDeclarations
选项,使工具能更高效地生成声明文件,提高编译速度,在某些情况下可并行处理声明文件生成和检查。 ${configDir}
模板变量:用于配置文件,解决相对路径问题,使共享配置文件更易使用和移植。- 参考
package.json
依赖生成声明文件:在某些情况下更宽松地处理依赖,减少错误提示。 - 编辑器和监视模式可靠性改进:在
--watch
模式和编辑器集成方面进行了改进,包括正确刷新配置文件错误、更好地处理删除后立即写入、跟踪符号链接的失败解析以及项目引用有助于自动导入等。 - 性能和大小优化:在语言服务和公共 API 中进行单态化处理,优化控制流节点,对控制流图进行优化,在
transpileModule
和transpileDeclaration
中跳过检查,减小 TypeScript 包大小,在声明文件生成中重用节点以及缓存歧视联合的上下文类型等,提高了性能。 - 更方便的 ECMAScript 模块 API 消费:在 Node.js 中修复了命名导入的问题,使开发人员可以更方便地使用 TypeScript 的 npm 包中的 API。
transpileDeclaration
API:新增用于生成单个声明文件的 API,在isolatedDeclarations
模式下可用于并行化声明文件生成。
- 推断类型谓词:TypeScript 5.5 可推断
显著的行为变化:
- 弃用 TypeScript 5.0 中的一些特性,如
charset
、target: ES3
等,在 6.0 版本中这些选项将成为错误。 lib.d.ts
变化:对 DOM 类型生成进行了更新,可能影响代码库的类型检查。- 对装饰器的解析更严格,现有装饰器可能需要加括号以避免错误。
undefined
不再是可定义的类型名,避免与内置类型冲突。- 简化参考指令声明生成,不再合成参考指令,除非使用
preserve="true"
属性。
- 弃用 TypeScript 5.0 中的一些特性,如
- 未来计划:下一个版本是 TypeScript 5.6,预计在 2024 年 9 月初发布,可通过安装 nightly 版本或使用 VS Code TypeScript Nightly 扩展来尝试早期版本,具体的迭代计划可在 issue 追踪器上查看。
此版本由 Daniel Rosenwasser 等 TypeScript 团队成员开发,他是 TypeScript 团队的产品经理,致力于提供优秀的开发工具。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。