【问题标题】:What are the main differences between Babel and TypeScriptBabel 和 TypeScript 的主要区别是什么
【发布时间】:2016-05-25 07:34:45
【问题描述】:

我知道 TypeScript 是用来编写 Angular2 的,这对于想要进入 Angular2 的人来说可能是一个更好的选择,但是当我看到 Babel 时,它看起来非常像 TypeScript。

我注意到许多知名公司都坚持使用 Babel。

一些问题:

  1. 它们之间有什么优势?
  2. 对于项目/开发人员来说,哪个使他们成为更好或更差的选择?
  3. 它们之间的主要区别是什么?是什么让它们与众不同?

【问题讨论】:

  • 即使一目了然,它们是完全不同的工具。您可以通过在每个简介中投入 15 分钟来回答这个问题。
  • TypeScript 是一种语言,Babel 是一种工具(将一种语言 ES6 转换为 ES5)。
  • @Marty 两个编译器在竞争,这个问题是合法的。
  • @Paleo 这似乎很不寻常,据我所知,他们的产品和目标截然不同。
  • 它们用于做同样的事情:用于浏览器或 Node.js 的应用程序。新进入该领域的团队都面临这样一个问题:哪种工具最适合他们的需求?

标签: javascript typescript babeljs


【解决方案1】:

TypeScript 是 JavaScript 的超集,可以编译成纯 JavaScript (ES3+)。 TypeScript 的主要目标是使开发人员能够利用出色的静态类型功能。它适用于将受益于以下功能的大型应用程序:

  • 类型注释和类型推断。
  • 泛型。
  • 接口、枚举、命名空间、模块和类(后两者在 ES6 中可用)。
  • 安全重构。

据我所知,Babel 只是将较新的 ECMAScript 功能“转换”为旧版 ECMAScript 环境支持的格式。它适合希望使用更新的语言功能编写纯 JavaScript 的开发人员。

【讨论】:

  • 这是否意味着 TypeScript 既是 ES6 到 ES3+ 的转译器,又是 javascript 的超集,它为 javascript 添加了一些功能,而 Bable 只将 ES6 转译为 ES5?
  • 现在 Typescript 支持普通的旧 Javascript,所以真的没有理由再使用 babel 了。
  • @Marty:我想抱怨“是 JavaScript 的超集”。不,这不对。有很多有效的 JavaScript 不是有效的 TypeScript。 TypeScript 是 JavaScript 的超集和子集。
  • @StefanSteiger 这句话来自 TypeScript 的自我介绍(字面意思是他们主页上的第 2 行),并不是我自己对我认为的任何特殊分析。
  • @StefanSteiger 这确实是一个超集,而不是一个子集。您所指的有效 JavaScript 示例不是有效的 TypeScript 是由于默认的 TS 编译器选项(大多数人使用的)。您可以放宽编译器设置中的限制,以便任何有效的 JavaScript 都可以编译,但您将失去一些鼓励 Better™ 代码的护栏
【解决方案2】:

Angular 2 开发人员之一的 Victor Savkin 谈到了他们为什么选择 Typescript 而不是其他技术。

http://victorsavkin.com/post/123555572351/writing-angular-2-in-typescript

最后一节 为什么选择 Typescript?

“当今前端开发人员有很多选择:ES5、ES6 (Babel)、TypeScript、Dart、PureScript、Elm 等。那么为什么选择 TypeScript?

让我们从 ES5 开始。 ES5 与 TypeScript 相比有一个显着优势:它不需要转译器。这使您可以保持构建设置简单。您无需设置文件观察器、转译代码、生成源映射。它只是工作。对于许多小型项目,这种简单性胜过 TypeScript 提供的高级重构和导航功能。您只需知道所有代码在哪里,以及它的作用。

ES6 需要转译器,因此构建设置与 TypeScript 没有太大区别。但它是一个标准,这意味着每个编辑器和构建工具要么支持 ES6,要么将支持它。

Elm 和 PureScript 是优雅的语言,具有强大的类型系统,与 TypeScript 相比,它们可以证明你的程序更多。用 Elm 和 PureScript 编写的代码比用 ES5 编写的类似代码要简洁得多。

这些选项中的每一个都有优点和缺点,但我认为 TypeScript 处于最佳状态,使其成为大多数项目的绝佳选择。 TypeScript 将一个好的静态类型语言的 95% 的有用性带到了 JavaScript 生态系统中。你仍然觉得你在编写 ES6:你继续使用相同的标准库、相同的第三方库、相同的习惯用法和许多相同的工具(例如 Chrome 开发工具)。它可以为您带来很多好处,而不会迫使您退出 JavaScript 生态系统。”

【讨论】:

  • 2019 年末签到。如今,如果你对用户群的浏览器选择有发言权——最值得注意的是,如果你不关心 IE 支持——那么 ES6 基本上不再需要编译器.
猜你喜欢
  • 2013-06-17
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多