写点什么

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

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

关注

评论 1 条评论

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

云原生专栏丨基于K8s集群网络策略的应用访问控制技术

inBuilder低代码平台

云原生 #k8s

Web3 游戏周报(4.28 - 5.04)

Footprint Analytics

gamefi web3

Partisia Blockchain 生态zk跨链DEX上线,加密资产将无缝转移

BlockChain先知

Partisia Blockchain 生态首个zk跨链DEX现已上线

石头财经

Flink物理分区概念与分类详解

木南曌

flink 实时计算

企业选择MES系统是选择现成的OR定制开发?

万界星空科技

生产管理系统 mes 万界星空科技 定制开发MES

《自动机理论、语言和计算导论》阅读笔记:p428-p525

codists

编译原理

【参赛总结】第二届云原生编程挑战赛-冷热读写场景的RocketMQ存储系统设计 - Nico

阿里云天池

RocketMQ 云原生

MES生产管理系统:私有云、公有云与本地化部署的比较分析

万界星空科技

服务器 云服务 私有云 mes 万界星空科技

苹果挖走大量谷歌人才,建立神秘人工智能实验室;李飞飞创业成立「空间智能」公司丨 RTE 开发者日报 Vol.197

声网

GreptimeDB 助力国家电网数字换流站打造稳定高效的时序数据底座

Greptime 格睿科技

时序数据库 国产化 智慧电网 国家电网

软件测试学习笔记丨测试用例基础概念

测试人

软件测试

mybatis使用多参数查询

百度搜索:蓝易云

云计算 Linux 运维 mybatis 云服务器

江苏气象AI算法挑战赛亚军比赛攻略_DontMind队

阿里云天池

阿里云 AI 算法

ETL如何执行Java脚本

RestCloud

Java 脚本 ETL 数据集成工具

AI 数据观 | TapData Cloud + MongoDB Atlas:大模型与 RAG 技术有机结合,落地实时工单处理智能化解决方案

tapdata

Tapdata Cloud 工单处理 大型语言模型LLM 检索增强技术RAG MongoDB Atlas

Partisia Blockchain 生态zk跨链DEX上线,加密资产将无缝转移

股市老人

Xilinx ZYNQ的应用开发介绍

芯动大师

开发板 驱动 ZYNQ

【深入浅出Spring原理及实战】「开发实战系列」Spring-Cache扩展自定义(注解失效时间+主动刷新缓存)

洛神灬殇

spring Spring Cache 缓存控制 缓存能力

成为一名架构师,你必须具有“战略意图”

快乐非自愿限量之名

架构 软件开发

首届云原生编程挑战赛总决赛亚军比赛攻略(ONE PIECE团队)

阿里云天池

Serverless 云原生

价值创造未来:财务规划与资源管理

智达方通

企业管理 资源管理 全面预算

一键自动化博客发布工具,用过的人都说好(segmentfault篇)

程序那些事

人工智能 工具 程序那些事 openai 自动化工具

【深入浅出Spring原理及实战】「开发实战系列」重新回顾一下异常重试框架Spring Retry的功能指南和实战

洛神灬殇

spring Spring retry 重试机制 spring-retry

品高虚拟化后端存储的发展演进

品高云计算

docker攻略,希望能帮助到大家对docker的理解

阿里云天池

Docker 镜像

直播预告|第一批 Vision Pro 开发者开始弃坑了吗? 本周六一起听听三位 XR 开发者的真实想法!

声网

【深入浅出Spring原理及实战】「工作实战专题」叫你如何使用另类操作去实现Spring容器注入Bean对象 (1)

洛神灬殇

Java spring 框架 Bean处理

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