NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论 1 条评论

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

redis 集群实现方案与原理

想要飞的猪

redis哨兵集群 redid集群cluster

浅谈中小企业进军新媒体行业为何屡次遭受挫败

石头IT视角

分布式监控平台 WGCLOUD v3.4.2 节流 30%,更轻更快

王逅逅

Linux 信创 zabbix Prometheus #运维 性能监测

跨平台桌面应用开发都有哪些主流框架

FinFish

小程序 跨端框架 桌面端开发 跨端应用开发

Go定时任务源码 - robfig/cron

人生如梦

Go 定时任务 cron

【C语言】register 关键字

謓泽

11月月更

Linux 系统启动过程

智趣匠

Linux Linux驱动 11月月更

算法题学习---删除有序链表中重复的元素-II

桑榆

算法题 11月月更

基于鸿蒙系统的ArkUI框架的公共剪切类属性和多态样式在前后端分离项目中的表现

恒山其若陋兮

11月月更

部署RDS 服务

我叫于豆豆吖.

11月月更

解决数据分析落地难的几点经验

穿过生命散发芬芳

数据分析 11月月更

【愚公系列】2022年11月 微信小程序-应用生命周期和全局变量

愚公搬代码

11月月更

鸿蒙系统ARKUI框架对于分布式计算和请求API的实战研究

恒山其若陋兮

前端 11月月更

真正的按需计费-函数工作流 FunctionGraph实战,5分钟搭建图片压缩应用

秃头也爱科技

2022-11-21:第N高的薪水。表结构和数据的sql语句如下。请问sql语句如何写? DROP TABLE IF EXISTS employee; CREATE TABLE employee (

福大大架构师每日一题

数据库 sql 福大大

DHCP 服务

我叫于豆豆吖.

11月月更

5分钟搭建图片压缩应用

华为云开发者联盟

云计算 后端 华为云 函数工作流

低代码会使初级码农失业吗

秃头也爱科技

SpringBoot之用拦截器避免重复请求

okokabcd

Spring Boot

计算机网络:数据链路层设备

timerring

计算机网络 11月月更 网桥

度量BGP监测源数量对AS可见性的影响

郑州埃文科技

AS IP地址 BGP数据源

不懂Hybird开发,感觉错过一个亿~

FinFish

小程序 前端框架 APP开发 APP软件开发、 混合开发

2022年中国电商平台市场洞察

易观分析

电商 报告

API安全设计5A原则

阿泽🧸

11月月更 API安全

ArkUI框架基于鸿蒙系统的Scroll和Scroller和自定义组件之插槽的实战案例心得

恒山其若陋兮

前端 11月月更

【Ajax】全面详细了解git的基础操作【万字教学+面试常客】

坚毅的小解同志

git 11月月更

WSUS 服务

我叫于豆豆吖.

11月月更

信用卡评测系列——阳光惠生活APP深化服务客户品牌理念,焕新升级7.0版

易观分析

金融 银行 信用卡

【web 开发基础】PHP 变量的作用范围 (29)

迷彩

作用域 静态变量 全局变量 局部变量 11月月更

元器件科普|变压器的分类及形状构造

元器件秋姐

元器件采购 华秋商城 变压器 电感器 电压

Alluxio 2.9新版发布 | 重塑架构,支持大规模多租户环境

Alluxio

分布式 新闻 Alluxio 大数据 开源 数据编排

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