【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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:004085

评论 1 条评论

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

报销流程太慢太复杂?区块链技术引入票据系统效率翻一倍

CECBC

数据共享 电子票据 优化业务 可信体系

第7周作业一

孙强

性能测试

考尔菲德

性能压测工具

武鹏

Kubernetes 1.0 发布刚六周年,IBM 却想招 12 年经验的

神经星星

程序员 Kubernetes 云原生 招聘 ibm

工作总结

Axe

通过双 key 来解决缓存并发问题

Bruce Duan

缓存穿透 缓存并发 双key解决缓存并发

架构师第七周学习总结

小蚂蚁

全国第一枚企业区块链电子印章诞生

CECBC

萝卜章 区块链印章 全流程上链 e签宝

计算机网络基础(九)---网络层-内部网关路由协议

书旅

计算机网络 网络协议 操作系统 计算机基础

阿里官方 Redis 开发规范

Bruce Duan

redis Redis开发规范

【研报下载】InfoQ《2020中国技术发展白皮书》重磅发布

InfoQ写作社区官方

写作平台 InfoQ 白皮书 研究报告 热门活动

MySQL常用函数

Bruce Duan

mysql常用函数

埋点全解析,你最关心的可视化埋点在这里!

易观大数据

一周信创舆情观察(7.13~7.19)

统小信uos

数据库 舆情 芯片

架构师训练第七周总结

Hanson

【week07】总结

chengjing

架构师训练营第七周作业

Bruce Xiong

《深度工作》学习笔记(1)

石云升

读书笔记 专注 深度工作

【week07】作业

chengjing

JAVA已过气?中俄大佬对话告诉你俄罗斯最受欢迎的编程语言是什么!

华为云开发者联盟

Java 开源 程序员 Lambda 编程语言

秒懂云通信:如何用阿里云平台发短信?

阿里云Edge Plus

第7章总结

武鹏

架构师训练营作业-web性能压测示例代码

superman

极客大学架构师训练营

SpringBoot分布式验证码登录方案

Bruce Duan

验证码 Kaptcha

【DevCloud·敏捷智库】如何利用故事点做估算

华为云开发者联盟

敏捷 敏捷开发 需求 故事 华为云

你只加了两行代码,为什么要花两天时间?

Yukun

程序员 debug bug

总结

孙强

架构师培训第七周练习

小蚂蚁

架构师训练第七周

Hanson

作业1

东哥

极客大学架构师训练营

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