TypeScript 3.6 发布,更严格的生成器与更好的Unicode标识符支持


近日,Typescript的项目经理Daniel Rosenwasser宣布推出TypeScript 3.6。这是TypeScript的主要版本,因为它包含语言和编译器中的许多新功能,比如更严格的生成器、更精确的数组扩展、改进的UX around promise、对标识符更好的Unicode支持等等。TypeScript 3.6还探索了一个新的TypeScript游乐场,新的编辑器功能以及许多重大变化。

TypeScript 3.6 beta于7月发布。 见 https://www.linuxboy.net/Linux/2019-07/159540.htm

语言和编译器的改进

更严格地检查迭代器和生成器

以前,如果从生成器生成或返回值,则TypeScript中的生成器用户无法区分。在TypeScript 3.6中,由于Iterator和IteratorResult类型声明的更改,引入了一种名为Generator类型的新类型。它是一个Iterator,它将同时包含return和throw方法。这将允许更严格的生成器检查器轻松理解迭代器中的值之间的差异。

TypeScript 3.6还可以在生成器函数体内推断出yield的某些用法。可以显式使用yield表达式来强制执行可以返回,生成和计算的值的类型。

更准确的阵列传播

在ES2015之前的目标中,TypeScript使用默认的-downlevelIteration标志来使用带数组的迭代结构。然而,许多用户发现不希望由它产生的发射没有定义的属性槽。为了解决这个问题,TypeScript 3.6提供了一个新的 __spreadArrays助手。它将“准确地模拟ECMAScript 2015中在-downlevelIteration之外的旧目标中发生的事情。”

围绕Promises改进了UX

TypeScript 3.6探讨了Promise API中的新改进,这是使用异步数据的最常用方法之一。现在,TypeScript的错误消息将告知用户在将Promise API传递给另一个函数之前是否写入了then()或等待Promise API的内容。在某些情况下,Promise API还将提供快速修复。

对标识符的更好的Unicode支持

当发送到ES2015及更高版本的目标时,TypeScript 3.6在标识符中包含对Unicode字符的更好支持。

SystemJS中的import.meta支持:当模块目标设置为system时,新版本支持将import.meta转换为context.meta。

环境上下文中允许使用get和set访问器:以前版本的TypeScript不允许在环境上下文中使用get和set访问器。 TypeScript 3.6中已更改此功能,因为ECMAScript的类字段提议与现有版本的TypeScript具有不同的行为。官方帖子还补充说:“在TypeScript 3.7中,编译器本身将利用此功能,以便生成的.d.ts文件也将发出get/set访问器。”

TypeScript playground中的新功能

TypeScript游戏允许用户编译TypeScript并检查JavaScript输出。它具有比typescriptlang更多的编译器选项,并且默认情况下在操场中打开所有严格选项。

在TypeScript Playground中添加了以下新功能:

  • 目标选项,允许用户从es5切换到es3,es2015,esnext等
  • 所有严格标志
  • 支持纯JavaScript文件

该帖还指出,在TypeScript的未来版本中,可以预期更多功能,如JSX支持和抛光自动类型获取。

突破性变化

  • 名为“构造函数”的类成员现在只是构造函数。
  • 全局窗口之类的DOM更新将不再定义为类型Window。相反,它被定义为类型Window&typeof globalThis。
  • 在JavaScript文件中,TypeScript只会在JSDoc注释之前查找声明的类型。
  • TypeScript 3.6不允许转义序列。

感兴趣的用户可以查看TypeScript的6个月路线图。 访问Microsoft博客,获取TypeScript 3.6的完整更新。

linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx

本文永久更新链接地址:https://www.linuxboy.net/Linux/2019-09/160453.htm

相关内容