TypeScript 4.7 在 Node.js 中添加了 ESM 支持

1,600 阅读1分钟

TypeScript 4.7 现在处于 beta 版本,该版本为 Node.js 12 提供 ECMAScript 模块 (ESM) 支持以及大量编码加强功能。

TypeScript 4.7 于 4 月 8 号发布,是 Microsoft 最新的 TS 版本。为 Nodejs 12 添加 ESM 支持最早是 TypeScript 4.5 计划,但最终被推迟到 TypeScript 4.7。

TypeScript 4.5 仅提供了对 Node.js 中 ECMAScript 模块的仅部分支持,这些模块可以通过打包重用代码。由于 Node.js 构建在基于 CommonJS 规范下的模块系统,因此实现全面的支持非常困难,因此 TypeScript 4.7 添加了两个 module 功能配置: node12 及 nodenext。

TypeScript 4.7 将于 5 月 10 日进入候选发布阶段,随后于 5 月 24 日发布最终版本。目前测试版可以通过 NPM 访问: npm install typescript@beta

TypeScript 4.7 中的其他功能包括:

  1. 为了控制模块检测,TypeScript 4.7 引入了选项moduleDetection
  2. 提供 moduleSuffixes 选项可自定义模块说明符的查找。
  3. 通过对计算机属性的控制流分析,TypeScript 分析计算属性的类型并正确缩小它们
  4. TypeScript 现在可以对对象和数组的函数执行更精细的推理。这允许这些函数的类型以从左到右的方式始终如一地流动,就像普通参数一样
  5. 函数和构造函数可以输入类型参数
  6. typeof 可以对私有字段执行查询
  7. 为对象文字方法提供了片段完成
  8. 在 strictNullChecks 下,类型检查器禁用了为向后兼容而维护的类型安全漏洞,其中类型参数可分配给 {} 和 object。这是一个突破性的变化
  9. readonly 元组的属性 length 也会被视为 readonly