写点什么

Babel 7.7 发布:改进了 TypeScript 支持、顶级作用域 Await 等特性

  • 2020-01-25
  • 本文字数:1130 字

    阅读完需:约 4 分钟

Babel 7.7发布:改进了TypeScript支持、顶级作用域Await等特性

最近发布的Babel 7.7 现在可以解析顶级作用域 await、Flow enum 声明(Flow提案)了,并提供了从某些语法错误中恢复的选项。Babel 7.7 现在支持TypeScript 3.7,此外,它还引入了一个全新的可选的 babel.config.json 配置文件,以及其他一些特性和 bug 修复。


顶级作用域 await 使 ECMAScript 模块(ESM)能够 await 资源,从而导致 import 它们的其他模块在评估其主体之前等待。例如,第3阶段提案(Stage 3 proposal )允许开发人员有条件地加载依赖项或执行应用程序初始化:


// 动态依赖路径const strings = await import(`./i18n/${navigator.language}.mjs`);
// 资源初始化const connection = await dbConnector();
复制代码


顶级作用域 await 的使用是基于模块绑定器也是支持它的假设前提的。使用 Rollup 的开发人员可以启用experimentalTopLevelAwait选项。使用 webpack 5 的开发人员可以使用experiments.topLevelAwait选项。启动 Babel 7.7, @babel/preset-env 将自动启用 @babel/plugin-syntax-top-level-await(如果 caller 支持的话)。


默认情况下,每当遇到某些无效语法时,先前版本的 Babel 解析器都会引发错误。尽管这种行为适用于主要的 Babel 用例(比如,转译),但它会给来自其他 Babel 客户端(例如 babel-eslint 或 prettier)的其他用例带来一些不便。 Babel 7.7 在 @babel/parser 中添加了一个新的 errorRecovery 选项。当它设置为 true 时,生成的 AST 将具有 errors 属性,该属性包含了解析器能够从中恢复的所有错误。


Babel7.7 还改进了对TypeScript 3.7的支持。对于 Babel 中自 7.0 以来就支持的可选链(optional chaining) (a?.b) 和空值合并(nullish coalescing)(a ?? b),Babel 7.7 为开发人员提供了使用断言函数对类字段declare的可能性:


function assertString(x): assert x is string {  if (typeof x !== "string") throw new Error("It must be a string!");}
class Developer extends Person { declare usingBabel: boolean;}
复制代码


“allowDeclareFields”标志提供了对类字段的 declare 支持,并且 @babel/plugin-transform-typescript 和 @babel/preset-typescript 都支持“allowDeclareFields”标志。


Babel 7.7.0 还提供了对新 babel.config.json 配置文件的支持,其作用与 babel.config.js 的相同。全新的 JSON 格式具有更好的可缓存性和可序列化性。


Babel 7.7 版本还附带了许多bug的修复和其他改进特性,包括内存使用方面的改进


Babel 是基于 MIT 开源许可的。欢迎开发者通过Babel GitHub组织参与贡献,并且遵循 Babel 的贡献指南行为准则。也可以通过Open Collective的方式进行捐款来支持该项目。


原文链接:


Babel 7.7 Released With Improved TypeScript Support, Top-Level Await and More


2020-01-25 09:004113

评论 1 条评论

发布
用户头像
标题和内容不一致?
2020-01-30 11:44
回复
没有更多了
发现更多内容

中台:未到终局,焉知生死?

ToB行业头条

中台

假的数字人民币钱包已出现,真的是啥样?

CECBC

数字货币 数字钱包

面试官:面对千万级、亿级流量怎么处理?

艾小仙

Java 缓存 分布式 高并发 中间件

狼人杀背后的秘密,实时语音你不知道的那些事

anyRTC开发者

音视频 WebRTC 语音 RTC 安卓

只有基于区块链才可能实现“大众创业、万众创新”

CECBC

区块链 分布式技术

总结年初到10月底Java基础、架构面试题,共计1327道!涵盖蚂蚁金服、腾讯、字节跳动、美团、拼多多等等一线大厂!

Java架构追梦

Java 架构 字节跳动 面试 蚂蚁金服

调包侠的炼丹福利:使用Keras Tuner自动进行超参数调整

计算机与AI

学习 keras 超参数调优

为产业AI去障:联想的边缘突破

脑极体

快速掌握并发编程---线程池的原理和实战

田维常

程序员

极客大学 - 架构师训练营 第六周作业

9527

第6周作业

饭桶

通过GUI界面更改 Ubuntu 20 LTS apt 源为阿里云

jiangling500

ubuntu 阿里云 apt

后李健熙时代的三星,将迎来怎样变局?

脑极体

《Maven实战》.pdf

田维常

程序员

Flink在窗口上应用函数-6-9

小知识点

scala 大数据 flink

极客大学 - 架构师训练营 第六周

9527

小白学算法:买卖股票的最佳时机!

王磊

Java 算法

直播带货大战在即:账号交易灰产猖獗

石头IT视角

第6周学习总结

饭桶

week1 架构方法-作业-杨斌

杨斌

【JSRC小课堂】Web安全专题(二)逻辑漏洞的burpsuite插件开发

京东科技开发者

Web

架构师训练营作业:第五周

m

分析和解决JAVA 内存泄露的实战例子

AI乔治

Java 架构 JVM 内存泄露

ConcurrentHashMap核心原理,彻底给整明白了

AI乔治

Java 架构 分布式 线程

码农会锁,synchronized 对象头结构(mark-word、Klass Pointer)、指针压缩、锁竞争,源码解毒、深度分析!

小傅哥

小傅哥 虚拟机 synchronized mark-word Klass Pointer

LeetCode题解:78. 子集,递归回溯,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

保险区块链创新中心成立,三方面赋能行业数字化转型

CECBC

区块链 保险

智能安防的普惠密码,在华为好望手中的三根“线头”上

脑极体

甲方日常 40

句子

工作 随笔杂谈 日常

频繁操作本地缓存导致YGC耗时过长

AI乔治

Java 架构 JVM GC

web worker的介绍和使用

程序那些事

多线程 Web Worker 异步模型 异步编程 web技术

Babel 7.7发布:改进了TypeScript支持、顶级作用域Await等特性_语言 & 开发_Bruno Couriol_InfoQ精选文章