兰州PromiseOnly婚礼主义微博,浪漫承诺,专业呈现

兰州PromiseOnly婚礼主义微博,浪漫承诺,专业呈现

11 月 17 日,微软发布 4.5 正式版本,本次更新,带来大幅功能更新和性能改进,包括引入 类型和 改进,用于增强异步编程、引入 模块、支持 断言等。具体更新内容如下:

Awaited 类型与 Promise 改进

在此前的版本中,要获取 Promise 的返回类型,必须使用 infer 功能,如下所示:

type Unwrap T = T extends PromiseLikeinfer U ? U : T; const resultPromise = Promise.resolve( true ); // resultUnwrapType is boolean type resultUnwrapType = Unwrap typeof resultPromise;

复制代码

4.5 引入了一种新的实用程序类型: 类型,你不需要像上面的 那样自定义映射类型,举例如下:

type resultUnwrapType = Awaited typeof reAvailable only under nightly releasessultPromise;

复制代码

该工具还有以下功能:

  • 递归解包
  • 不依赖 PromiseLike 更稳健
  • 利用 Awaited ,为 Promise.all 、 Promise.race 、 Promise.allSettled 和 Promise.any 增加重载

下面看一些不同的用例

// type is string type basic = Awaited Promise string ; // type is string type recursive = Awaited Promise Promise string ; // type is boolean type nonThenObj = Awaited boolean ; // type is string | Date type unions = Awaited Date | Promise Promise string ; type FakePromise = { then: () = string }; // type is never type fake = AwaitedFakePromise;

复制代码

在 Nightly 版本支持 Node.js 运行 ECMAScript 模块

Node.js 的模块基础一直是 CommonJS,随着多态应用的转变,支持 ECMAScript 模块的要求也越来越高。过去几年时间里,Node.js 一直在努力支持运行 ECMAScript 模块。从 Node.js 12 版本开始,对 ES 模块的支持就很广泛了。

ES 模块带来了什么

  • 使用 import/export 语句语法
  • 顶级 await 可与 nodenext 一起使用
  • 因为现在有不同的模块策略 ES 模块相对导入需要完整的文件扩展名: import fade from ./utils.js
  • 一些全局关键字,如 require 在 ES 模块上不起作用
  • CommonJS 将转译 ES 特性,如 import/export 语法

目前该功能仅在 TypeScript Nightly 版本中可用。

node_modules 支持 lib

为了确保 TypeScript 和 JavaScript 能够开箱即用,TypeScript 捆绑了一系列声明文件(.d .ts 文件)。这些声明文件表示 JavaScript 语言中可用的 API 和标准的浏览器 DOM API。虽然根据文件目标有一些合理的默认值,但你可以通过在 tsconfig.json 中配置 lib 设置,来挑选程序使用哪些声明文件。

TypeScript 4.5 引入了一种覆盖特定内置库的方法,类似于 @types/support 的工作方式。在决定 TypeScript 应该包含哪些 lib 文件时,它首先会在 node_modules 中寻找一个有作用域的 @typescript/lib-* 包。例如,当在 lib 中包含 dom 选项时,TypeScript 会使用 node_modules/@typescript/lib-dom 中的类型。

然后可以安装一个特定的包来接管给定的库。例如,现在 在 @types/web 上发布 DOM API 版本。如果你想锁定你的项目到一个特定版本的 DOM API,可以添加这个到你的 .json:

{ "dependencies" : { "@typescript/lib-dom" : "npm:@types/web" }}

复制代码

从 TypeScript 4.5 开始,依赖管理器的锁文件(lockfile)会确保使用的 DOM 类型的版本完全相同。

其他新特性:

  • 引入 es2022 模块:TypeScript 现在支持一个新的模块设置:es2022。es2022 模块的主要功能是顶层 await,意味着开发者可以在 async 函数之外使用 await。这在模块 esnext(以及现在的模块 nodenext)中已经得到支持,但 es2022 是这个功能的靠前个稳定目标。
  • 模板字符串可以用作判断符:TypeScript 4.5 现在可以缩小具有模板字符串类型的值,并且还将模板字符串类型识别为判别式。
  • 新的代码段补全:TypeScript 4.5 带来了两个新的代码段补全,这些补全添加了一些默认文本,并允许开发人员可能通过标签查看想要调整的代码片段。
  • 支持 import 断言:TypeScript 4.5 支持 ECMAScript 关于导入断言的提议,这是运行时使用的一种语法,以确保导入有一个预期的格式。
  • 私有字段检查:开发人员现在可以编写一个具有 #private 字段成员的类,并使用 in 运算符查看另一个对象是否具有相同的字段,以用于检查对象上是否具有私有字段。
  • JSDoc 中的常量断言和默认类型参数
  • 更快的加载时间:对所有系统的 Node.js 引入 realpathSync.native 函数, 减少项目加载时间(Windows 少了 5-13%)。
  • 更好的编辑器支持:对未解析的类型会直接展示原名(之前版本是用 any 来代替未解析的类型)

参考链接:

https://devblogs.microsoft.com/typescript/announcing-typescript-4-5/

声明:本站所有作品(图文、音视频)均由用户自行上传分享,本文由"小橙子耶"自行发布,本站仅供存储和学习交流。若您的权利被侵害,请联系我们删除。如若转载,请注明出处:https://www.flipbrief.com/fresh/8ekvnRB7.html