最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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:021445
用户头像

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

关注

评论 1 条评论

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

SpringCloud全链路灰色发布具体实现!

王磊

Java SpringCloud

解决制造业痛点,数据化方案助力高效生产!

搞大屏的小北

数据分析 数据可视化 制造业

Final Cut Pro 10.6.10 mac破解版下载

iMac小白

Java表达式引擎选型调研分析 | 京东云技术团队

京东科技开发者

Java 后端 企业号11月PK榜 表达式引擎 Java表达式

纯CSS实现魔法渐变边框卡片

南城FE

CSS css3 前端 用户体验

OpenHarmony 4.0 Release版本发布,新增4000+ API

新消费日报

火山引擎DataLeap计算治理自动化解决方案实践和思考

字节跳动数据平台

大数据 数据中台 数据治理

从混乱到优雅:基于DDD的六边形架构的代码翻新指南 | 京东物流技术团队

京东科技开发者

架构 DDD 分层架构 企业号11月PK榜

Mac电脑快速切换工具 One Switch激活中文最新版

胖墩儿不胖y

Mac软件 切换工具 Mac软件切换软件

Python标准库中隐藏的利器

EquatorCoco

Python 编程语言 标准框架

ROLA-IP在HTTP海外IP代理市场的优势

Geek_ccdd7f

构建全面预算体系,加强企业风险管理

智达方通

企业风险管理 风险控制 全面预算管理 全面预算体系

数据可视化新秀 DataEase 可否替代 Tableau?

搞大屏的小北

数据可视化 Tableau 替换 DataEase

一台亚马逊EC2对开发者而言意味着什么?

申屠鹏会

Enfocus PitStop Pro 2022 for Mac(pdf增强插件) v22.0.1378944永久激活版

mac

苹果mac Windows软件 Enfocus PitStop Pro Acrobat插件

Adobe Media Encoder 2024 for mac 中文破解版下载

影影绰绰一往直前

The Unarchiver mac解压软件 支持M1/M2

影影绰绰一往直前

TDengine 与煤科院五大系统实现兼容性互认,助力煤矿智能化安全体系搭建

TDengine

tdengine 时序数据库

IPQ9574 vs IPQ9554 vs QCN9274 vs QCN6274 Industrial Applications|WiFi 7 Use Case

wallyslilly

ipq9554 qcn9274 qcn6274 ipq9574

纺织行业如何利用数智人力迈向新型工业化

用友BIP

数智人力

怎样阅读 h2 数据库源码 | 京东物流技术团队

京东科技开发者

数据库 源码 h2database 企业号11月PK榜

IPQ8072: The future of high-performance Network Acceleration - Wireless Communications

wifi6-yiyi

5G wifi6 IPQ8072 6G

多面板文件管理器:QSpace Pro中文版

mac大玩家j

文件管理 Mac软件 文件管理器

如何构建可视化设计中的视觉层次?

搞大屏的小北

数据可视化 视觉交互 大屏设计 设计规范

mac Office2021中文破解版 Office LTSC 2021完整激活版下载

影影绰绰一往直前

国内外四款强大的远控使用体验:ToDesk、向日葵、AnyDesk、Microsoft 远程桌面横向比较

挚爱光小胖

远程控制 ToDesk 居家办公软件

SpringBoot 项目优雅实现读写分离 | 京东云技术团队

京东科技开发者

数据库 spring Spring Boot 读写分离 企业号11月PK榜

Snagit for mac(屏幕截图工具) 2023.2.4中文激活版

mac

苹果mac Windows软件 Snagit 屏幕截图视频录制软件

许多朋友问我有没有好用的海外代理IP

Geek_ccdd7f

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