您现在的位置是:首页 > 文章详情

TypeScript 5.3 RC 发布

日期:2023-11-04点击:108

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

 npm install -D typescript@rc 

TypeScript 5.3 中的新特性包括:

自 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. // ... } }

更多详情可查看发布公告

原文链接:https://www.oschina.net/news/264869/typescript-5-3-rc
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章