TypeScript 5.3 正式发布


TypeScript 5.3 已正式发布。

主要变化

  • 支持 import attributes 提案的最近更新

  • 在 Import Types 中提供对resolution-mode的稳定支持
  • 为所有 Module Modes 提供resolution-mode支持
  • switch (true)Narrowing

  • Narrowing On Comparisons to Booleans

  • 检查对实例字段的super属性访问

  • 针对类型的交互式嵌套提示 (Interactive Inlay Hints)

  • 跳过 JSDoc 解析以进行优化

  • 合并tsserverlibrary.jstypescript.js


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-11-05

TypeScript 5.3 RC 版本现已发布。可以通过 NuGet 获取,或通过 npm 使用以下命令获取: npm install -D typescript@rc TypeScript 5.3 中的新特性包括: Import Attributes 在 Import Types 中稳定支持resolution-mode resolution-mode在所有模块模式均受

2023-10-10

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

2023-08-17

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

2022-11-23

OpenSUSE 正式发布了 openSUSE Leap Micro 5.3,这是他们基于 SUSE Linux Enterprise 15 SP4 和 SLE Micro 5.3 构建的操作系统的最新版本。 下载地址:https://get.opensuse.org/ openSUSE Leap Micro 是可靠的现代化轻量级操作系统,专门针对主机容器和

2023-09-08

Google 开发者在线课程 开始学习 虚幻引擎5.3已正式发布。新版本带来了大量全方位的改进。 除了增强核心渲染、开发者迭代和虚拟制片的工具集外,还为渲染、动画和模拟引入了实验性的新功能,让开发者有机会在UE5中测试

2022-07-29

lseye" 系列操作系统,Tails 开发团队近日发布了 Tails 5.3 的正式版本,更新内容如下: 升级到 Tor 浏览器 11.5.1 修复 uBlock 在 Tor 浏览器中未被启用的问题 不安全浏览器的窗口标题改为 “Tor 浏览器” 修复测试套件有时无法

2022-06-03

索引擎,是一个被 Vivaldi 用户多次提及的功能请求,现在正式实装到 Vivaldi 5.3 版本中。用户可以在你安装的所有 Vivaldi 中同步你的所有搜索引擎,包括桌面端、手机、平板、Chromebook,甚至是汽车(极星与雷诺的汽车都可以使用

2023-09-05

要的痛点:启动慢,费内存。 关键记事: 2021年1月,正式对外开源 2022年7月,建立官网,发力推广 2023年2月,v2.0 发布。官网增加 Solon Initializr,用于生成项目模板 2023年4月,成为信通院可信开源社区、可信开源项目

2023-12-16

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

2023-07-17

IoTOS v1.5.3 已经发布,IoTCard 管理 & 运营系统。   IoTOS-v1.5.3 新增 智能诊断&会话记录导出 1.通道数据统计增加 卡数量、总流量 已用流量 剩余流量 统计 2.卡详情增加会话信息查询会话记录(分页查询)、导出历史记录

2023-06-29

GnuCash 5.3 现已发布。GnuCash 是一个适用于个人或小型企业的财务软件,采用 GPL 协议开源,支持 GNU / Linux、BSD、Solaris、Mac OS X 及 Microsoft Windows。GnuCash 易于使用,且功能强大,它可以追踪银行帐户、股票、收入与支出,也可以

2023-05-09

全为中心,主要面向黑客和渗透测试人员。Parrot OS 5.3 已发布,这是 Parrot OS 5 “Electro Ara” 系列的第三部。此版本中最大的变化是更新内核,即长期支持的 Linux 6.1 LTS 系列,这是对前一版本中使用的 Linux 6.0 内核系列的重大升级

2022-05-28

Mastodon v3.5.3 发布了。Mastodon 是一个免费的开源社交网络程序,一个商业平台的替代方案,避免了单个公司垄断沟通的风险。无论选择哪个服务器,都可以与其他人进行互动。通过运行自己的 Mastodon 实例,可无缝地参与到社交网

2022-06-23

Zulip Server 5.3 现已发布。Zulip 是一个开源团队协作工具,一款专为实时和异步对话而设计的现代团队聊天应用程序,支持快速搜索、拖放文件上传、图像预览、组私人消息、可听通知、错过电子邮件消息提醒与桌面应用等。 具