Typescript5.8发布
- 人工智能
- 2025-09-12 11:42:01

以下是 TypeScript 5.8 官方发布说明的中文整理,重点列出新特性和修复的 Bug:
新特性 1. 返回表达式中的分支细粒度检查 在 return 语句中的条件表达式(如三元运算符 ? :)会直接检查每个分支是否符合函数的返回类型。示例:declare const untypedCache: Map<any, any>; function getUrlObject(urlString: string): URL { return untypedCache.has(urlString) ? untypedCache.get(urlString) : // 分支1: any urlString; // 分支2: string → 报错(无法赋值给 `URL`) } 2. --module nodenext 支持 require() 导入 ECMAScript 模块 Node.js 22 允许从 CommonJS 模块 require() 导入 ESM 模块(不含顶层 await 的 ESM 文件)。TypeScript 5.8 在 --module nodenext 下不再报错此类导入。 3. 新增 --module node18 编译选项 为 Node.js 18 提供稳定的模块解析规则: 禁止 require() 导入 ESM 模块。允许已弃用的 import 断言语法(assert)。 4. --erasableSyntaxOnly 选项 启用后,禁止包含运行时语义的 TypeScript 语法(如 enum、带运行时代码的命名空间等),确保代码可被擦除为纯 JavaScript。示例:class C { constructor(public x: number) {} // 报错:参数属性(`public x`)不可用 } 5. --libReplacement 标志 控制是否允许通过 @typescript/lib-* 替换默认的 lib 类型定义(默认行为可能未来禁用,建议显式配置)。 6. 声明文件中保留计算属性名称 生成 .d.ts 文件时,保留计算属性名称的原始变量名(如 [propName] 而非 [x: string])。示例:export let propName = "theAnswer"; export class MyClass { [propName]: number; // 声明文件保留 `[propName]` 而非 `[x: string]` } 7. 程序加载与更新的性能优化 减少路径规范化时的数组分配。避免在无结构变化的编辑中重新验证项目配置(提升 --watch 和编辑器响应速度)。
重要 Bug 修复 1. import 断言语法限制 在 --module nodenext 下,弃用 assert 语法,强制使用 with 关键字(Node.js 22 已不再支持 assert)。示例:import data from "./data.json" assert { type: "json" }; // 报错:需改用 `with` 2. lib.d.ts 更新引发的类型检查影响 更新了 DOM 类型定义,可能影响现有代码的类型检查(需检查相关类型兼容性)。 3. 路径大小写敏感性问题修复 修复 Windows 系统上因路径大小写不一致导致的模块解析失败问题。 4. 声明文件生成兼容性问题 TypeScript 5.8 生成的声明文件可能不兼容旧版本(如 5.7 及更早版本)。
其他改进 1. 错误消息优化 对模板字符串类型不匹配等错误提供更清晰的提示。 2. 编辑器体验提升 VS Code 的自动导入和代码补全更精准。 3. 实验性语法支持 解析 import attributes 提案语法(需运行时支持):import data from "./data.json" with { type: "json" };
未来计划 TypeScript 5.9 将包含进一步改进(如条件返回类型的增强检查)。可通过 npm install typescript@next 提前体验夜间构建版本。
完整内容详见 TypeScript 5.8 官方说明。
Typescript5.8发布由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Typescript5.8发布”
上一篇
记浙江大华校招Java面试