TypeScript 5.3 RC 发布


TypeScript 5.3 RC 版本现已发布。可以通过 NuGet 获取,或通过 npm 使用以下命令获取:

npm install -D typescript@rc

TypeScript 5.3 中的新特性包括:

  • Import Attributes
  • 在 Import Types 中稳定支持resolution-mode
  • resolution-mode在所有模块模式均受支持
  • switch (true)Narrowing
  • Narrowing On Comparisons to Booleans
  • instanceof Narrowing Through Symbol.hasInstance
  • 检查对实例字段的 super 属性访问
  • 针对类型的交互式嵌套提示 (Interactive Inlay Hints)
  • PrefertypeAuto-Imports 的设置
  • 通过跳过 JSDoc 解析进行优化
  • 通过 Comparing Non-Normalized Intersections 进行优化
  • 合并tsserverlibrary.jstypescript.js
  • Breaking Changes 和 Correctness Improvements

自 Beta 版以来的新变化有:

Beta 版允许resolution-mode跨模块分辨率设置使用,但并未对此进行记录。自 Beta 版发布以来,项目团队添加了一个选项,在可能的情况下首选type-only auto-imports

import attributes

import attributes 的一个用例是向运行时提供有关模块预期格式的信息。

// We only want this to be interpreted as JSON,
// not a runnable/malicious JavaScript file with a `.json` extension.
import obj from "./something.json" with { type: "json" };

TypeScript 不会检查这些属性的内容,因为它们是特定于主机的,因此不会对它们进行检查,只是让浏览器和运行时处理它们(可能会出错)。

// TypeScript is fine with this.
// But your browser? Probably not.
import * as foo from "./foo.js" with { type: "fluffy bunny" };

动态 import () 调用也可以通过第二个参数使用 import 属性。

const obj = await import("./something.json", {
with: { type: "json" }
});

第二个参数的预期类型由一个名为 ImportCallOptions 的类型定义,默认情况下,该类型只期望调用一个属性 with

请注意,导入属性是从早期的 "导入断言"(import assertions)提案演变而来的,该提案已在 TypeScript 4.5 中实现。最明显的区别是使用了 with 关键字而非 assert 关键字。但不太明显的区别是,运行时现在可以自由使用属性来指导导入路径的解析和解释,而导入断言只能在加载模块后断言某些特性。

随着时间的推移,TypeScript 将淘汰旧的导入断言语法,转而使用建议的导入属性语法。使用 assert 的现有代码应迁移到 with 关键字。需要导入属性的新代码应只使用 with 关键字。

switch (true)Narrowing

TypeScript 5.3 可以根据 switch (true) 中每个 case 子句的条件执行 narrowing。

function f(x: unknown) {
switch (true) {
case typeof x === "string":
// 'x' is a 'string' here
console.log(x.toUpperCase());
// falls through...

case Array.isArray(x):
// 'x' is a 'string | any[]' here.
console.log(x.length);
// falls through...

default:
// 'x' is 'unknown' here.
// ...
}
}

更多详情可查看发布公告。


相關推薦

2023-08-17

微软高级软件工程师、TypeScript 工具链开发者 Jake Bailey 表示,TypeScript 5.3 的体积将会比 5.2 减小 20%。 他介绍了部分采取的举措: 在 4.9 中删除了一些自 3.7 以来不小心被引入到软件包的文件 在 5.0 中删除 module 在 5.3 中,

2023-11-22

TypeScript 5.3 已正式发布。 主要变化 支持 import attributes 提案的最近更新 在 Import Types 中提供对resolution-mode的稳定支持 为所有 Module Modes 提供resolution-mode支持 switch (true)Narrowing Narrowing On Comparisons to Boolea

2023-10-10

TypeScript 5.3 已发布 Beta 测试版。 主要变化 支持 import attributes 提案的最近更新 switch (true)Narrowing Narrowing On Comparisons to Booleans 检查对实例字段的super属性访问 针对类型的交互式嵌套提示 (Interactive Inlay Hints)

2023-03-03

TypeScript 5.0 发布首个 RC 版本,从现在开始到 TypeScript 5.0 的稳定版本,除了关键的错误修复之外不会有进一步的变化。 5.0 版本实现了新的装饰器标准、更好地支持 Node 和捆绑器中的 ESM 项目的功能、库作者控制泛型推理的新方

2022-05-13

TypeScript 4.7 首个 RC 版本已发布。该版本主要新功能如下: Node.js 中的 ECMAScript 模块支持 模块检测控制 计算属性的控制流分析 改进的对象和方法中的函数推理 实例化表达式 extendsinfer 类型变量的约束 类型参数的可选

2022-11-03

TypeScript 4.9 RC 已发布,自  Beta 版本以来,新增了 return  关键字 go-to-definition 、在类中包含自动访问器等新功能,点击链接即可查看对于功能的详情。 TypeScript 4.9  Beta 版本值得关注的新特性: 新增 satisfies 操作符

2023-08-11

TypeScript 5.2 发布了首个 RC 版本。 5.2 新特性 using 声明和显式资源管理 (using Declarations and Explicit Resource Management) 装饰器元数据 (Decorator Metadata) 命名和匿名元组元素 (Named and Anonymous Tuple Elements) 为数组并集 (U

2022-08-15

TypeScript 4.8 首个 RC 已发布。开发团队表示,从现在开始到发布 TypeScript 4.8 稳定版本,预计除了修复重要错误之外不会有进一步的变化。 主要更新内容包括: 改进交叉类型、联合类型兼容性,以及类型收窄功能 改进对infer

2023-06-03

TypeScript 5.1 已正式发布。 重要变化 更智能地检查未定义返回值的函数 (undefined-Returning Functions) 旧代码 function foo() { // no return } // x = undefined let x = foo(); //fine - we inferred that 'f1' returns 'void' function f1() { // no returns } //fine -

2021-11-18

11月17日,微软发布了 TypeScript 4.5 正式版本 ,4.5 正式版本和 RC 版本在功能上并没有什么改动,除了添加关于新 JSDoc 特性的注释 ,不过这个特性也是 RC 版本的新功能,只是当时没有写出来。 TypeScript 4.5 正式版新

2022-08-27

TypeScript 4.8 已正式发布。 自 Beta 和 RC 发布以来的变化 自 Beta 测试版发布以来,稳定版现已支持从自动导入中排除特定文件。测试版的公告没有提到围绕类型签名中未使用的解构别名 (destructuring aliases) 的破坏性变化。此外

2023-12-16

通知功能。 Node.js兼容性改进 1.39版本为了方便将现有的TypeScript代码库迁移到Deno,引入了对不规范导入的支持。例如,它允许在没有文件扩展名的情况下解析导入,或者使用不正确的文件扩展名导入TypeScript文件。此外,还增加

2024-07-03

SystemDictStarter v1.5.3 已经发布,这是一个系统数据字典自动转换工具。 此版本更新内容包括: Redis 使用 Pipeline 批量处理数据字典值文本 feat: 刷新字典数据时根据字典值文本数量来决定是否调用批量保存方法,在使用 Redis 存

2024-10-17

avue v3.5.3 已经发布,基于 Element 的前端框架 此版本更新内容包括: v3.5.3 2024-10-16 新增 Date 组件新增 months、 years、yearrange 类型在线例子 优化 dicData 字典的加载方式gitee_IAWIKL Radio 和 Checkbox 组件的 label 属性警告 getAs