写点什么

Babel 7 支持 ES.Next 提案和 TypeScript

  • 2018-11-01
  • 本文字数:1559 字

    阅读完需:约 5 分钟

Babel 7 支持 ES.Next 提案和 TypeScript

Babel 7 带来了很多重大变更和改进,包括对 TypeScript 转换的支持以及更好的用于管理 ES.Next 提案的方法。

Babel 和 TypeScript 团队合作,让 Babel 可以用 @babel/preset-typescript 解析和转换类型语法。Babel 已经可以支持 Flow,Babel 团队的目标是为一些工具提供支持,这些工具可以让 JavaScript 用户利用渐进类型。TypeScript 项目经理 Daniel Rosenwasser 解释了 Babel 和 TypeScript 团队协作的动机和好处:

一年多以前,我们开始寻找用户在使用 TypeScript 时遇到的最大困难,我们发现 Babel 用户面对的一个共同问题是使用 ypeScript 太难了。原因各不相同,但对于很多开发人员来说,重构已经正在运行的构建可能是一项艰巨的任务。

虽然 TypeScript 编译器仍然是构建 TypeScript 的首选方法,Babel 可以处理编译和转换,但 Babel 没有提供内置的类型检查。这种集成可以让 Babel 用户利用 TypeScript 的拼写和错误检查优势。

定义 JavaScript 年度更新的工作组 TC39 创建了很多提案供参考。Babel 7 更改了默认行为,要求用户明确选择加入版本 4 之前的任何特性,以防止用户无意中依赖尚未最终确定的特性。

Babel 支持的 TC39 提案的完整列表可在 babel/proposal 中找到。

使用 Babel 进行配置的重大改进是在版本 7 中完成的,包括引入 babel.config.js。这个新的配置文件是可选的,并不完全是作为.babelrc 的替代,但在某些情况下,例如对于开发和生产环境的不同编译选项,预计会派上用场。

根据 Babel 维护者 Henry Zhu 所述:

*.js 配置文件在 JavaScript 生态系统中相当常见。ESLint 和 Webpack 分别使用.eslintrc.js 和 webpack.config.js 配置文件。

需要注意的是,babel.config.js 的配置方案与.babelrc 是不一样的。新的配置文件总是从文件中解析配置,而.babelrc 将查找每个文件,直到找到配置。这种方式可以利用选择性配置,并进行配置覆盖。

发布 ES2015+ 软件包以及使用和编译这些软件包具有一定的挑战。Babel 现在允许应用程序为测试、客户端源代码和服务器端代码提供不同的编译配置,不再需要为每个目录创建新的.babelrc 文件。

Babel 7 还为缺乏 Promises 和 Symbols 等功能的环境提供实验性的自动 ployfill 支持。Babel 7 不会导入整个 polyfill,而是只导入代码库中使用的 polyfill。

Babel 7 增加了更好的模块定位、用于 Babel 转换的调用者元数据、JSX 支持、babel-upgrade 工具等等。

在升级到 Babel 7 时需要注意几个重大变化:

  • 移除对 Node.js 6 之前版本的支持;
  • 使用带有作用域的 @babel 命名空间,以防止与官方 Babel 包混淆;
  • 移除年度预设,替换为 @babel/preset-env;
  • 使用选择性 TC39 个别提案替换阶段提案;
  • TC39 提议插件现在是 -proposal,而不是 -transform;
  • 为某些面向用户的包(例如 babel-loader、@babel/cli 等)在 @babel/core 中引入
    peerDependency。

在展望 Babel 7 之后的未来时,Zhu 说:

Babel 本质上与它编译的内容联系在一起:即 JavaScript。只要有新的建议,就有工作要做。这包括在语法“稳定”之前用于实现和维护语法的时间和精力。我们关心整个过程:升级路径、新功能培训、标准 / 语言设计、易用性以及与其他项目的集成的宣传。

例如,Babel 团队一直致力于支持修订后的装饰器提案,该提案将包含在7.1 版本中。修订后的提案与之前的提案有很大不同,增加了更多特性。 TypeScript 路线图也包括了实现修订后的 ES 装饰器提案的计划。

其他正在开发中的新 Babel 功能包括 minify、插件顺序、更好的验证 / 错误、异步使用 Babel,等等。有关详细信息,请参阅 Babel 路线图

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

查看英文原文 Babel 7 Release Improves Support for ES.Next Proposals and TypeScript

2018-11-01 17:021687
用户头像

发布了 79 篇内容, 共 32.5 次阅读, 收获喜欢 119 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

从设计到伴飞:数字孪生赋能航空航天新时代

DevOps和数字孪生

一文彻底搞定Spring Security 认证,实现登陆登出功能

快乐非自愿限量之名

Java 数据库

如何利用 ClickHouse 实现高级分析:MySQL 到 ClickHouse 实时数据同步指南

tapdata

数据迁移 实时数据复制 Metabase MySQL到ClickHouse 高级分析

探索 Pencils Swap 的叙事:打造流动性与链上收益枢纽

石头财经

ThinkPad X1 Carbon Aura:打破性能与便携悖论,打开AI PC行业新想象

科技范儿

探索 Pencils Swap 的叙事:为 DeFi 的再次爆发蓄力

BlockChain先知

解锁AI潜力:AI在销售领域的应用案例(非Chatbot)

Baihai IDP

程序员 AI chatbot Baihai IDP

《计算机组成及汇编语言原理》阅读笔记:p133-p159

codists

编程人 计算机组成及汇编语言原理

新课上线丨如何借助华为项目管理经验,达到项目“事成人爽”的目标?

轶天下事

【HarmonyOS NEXT】ArkTS 线程模型解析与使用

冉冉同学

鸿蒙 HarmonyOS OpenHarmony HarmonyOS NEXT

制度管理:如何提升公司政策的执行力?

爱吃小舅的鱼

公司管理 公司制度 公司制度管理

华为ensp-BGP联盟

阿落ovo

“赛博土木工程师”的多面人生:以技术绘制蓝图,分享知识行走江湖

华为云开发者联盟

物联网 IoT 人脸识别 OBS 华为云IoTDA

JNPF凭什么杀出低代码重围……

高端章鱼哥

全球人形机器人赛道:2024年终汇总和2025年行业前瞻

机器人头条

科技 特斯拉 大模型 人形机器人 具身智能

履约系统:发货单、配送单模型设计详解

快乐非自愿限量之名

架构 开发

Memcached 可观测性最佳实践

观测云

memcached

一图读懂|《企业级研发管理系统迁移指南》精华速览

万事ONES

项目管理 ONES 企业研发管理

阿里大牛10年苦心终成Java面试突击指南,程序员突击找工作拿高薪offer必备!

程序员高级码农

Java 编程 程序员 java面试 Java面试题

从社区共识到资本效能:解析SYNBO的去中心化投资协议创新

股市老人

混合云网络过于复杂?ENS给你全局一张网的极致体验

不在线第一只蜗牛

网络

这几个 IoTDB 分布式调优的关键细节,你一定要知道!

Apache IoTDB

8折大优惠!联想企业购助力中小企业轻松迈入智能办公新时代

科技范儿

MT7915 vs MT7925: Comprehensive Analysis of WiFi 6 and WiFi 7 Chipsets

wifi6-yiyi

MT7915 MT7925

25年国内最牛的Java面试八股文合集,不接受反驳

程序员高级码农

Java 编程 程序员 java面试 Java面试题

一场化工AI大赛,点亮行业智能化的星星之火

脑极体

AI

Babel 7 支持 ES.Next 提案和 TypeScript_其他_Dylan Schiemann_InfoQ精选文章