2019-03-14
能编译为 JavaScript 的工具非常之多
https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS
这种语法使 JavaScript 开发者的学习曲线陡增
JIT 编译在开发过程中使用,编译器速度特别快。然后,当一个应用程序准备发布时,它被 AOT 编译。因此,借助先进的工具和编译器,Dart 具有两全其美的优势:极快的开发周期、快速的执行速度和极短启动时间。
Dart 可以编译成 JavaScript,所以浏览器可以执行
由 Google 创建的,Chrome 开始流行时,Dart流行一时,曾被认为会代替 JavaScript
Dart语法再当时更像 C# 或 Java ( 当时2011年 JavaScript 没有 class ),所以当时 JavaScript 开发者对其语法并不熟悉,学习曲线很高。另外,在当时,一个 Hello World 的Dart程序编译成 Javascript 会有大量代码。
现在 Dart 并非专注于 Web,Dart 2 的改进集中在优化客户端开发。Dart 也淡出 Compile to JavaScript 工具阵营。
由 Microsoft 2012年10月发布
2014 年,Microsoft 并不 cool,在 JavaScript 世界没有突出贡献
TypeScript 工具集和 Visual Studio 捆绑,在 Visual Studio 中才会有好的开发体验,但 JavaScript 世界几乎没有人使用 Visual Studio。因为 Visual Studio 收费,并且当时只能在 Window 平台使用。
所以当时几乎没有人动力去知道 TypeScript,写 TypeScript,也没人讨论 TypeScript
而且还有类似这样的一些反对声音:
2015年2月事情开始改变
原因如下:
Vue 3.0 将使用 TypeScript
Create React App 也官方支持了 TypeScript
得益于Microsoft 的 推广,更重要的是 TypeScript 真的解决了 JavaScript 功能缺陷的实际问题
完全遵守 ECMAScript 标准,这和 CoffeeScript 和 Dart 完全不同
兼容 Javascript, 是其超集
JavaScript 是合法的 TypeScript, 这意味着用 TypeScript 不用更改原来的 JavaScript 代码,可以循序渐进的增加 TypeScript 的类型特征,这使得学习曲线接近于0
马上可用的 ES6 ES7… 最新语法
类和继承
箭头函数
多行字符串
模板字面字符串
丰富的编译选项
类型 (Types)
Tooling - By far, the most significant value of TypeScript is the developer tooling it enables.
大量TypeScript兼容的第三方库,你用到的几乎都有
怎么开始?
TypeScript vs Flow?
Flow 也是静态类型检查,直接作用于 JavaScript 文件,应该说是一种更简洁的方式Flow 也是静态类型检查,直接作用于 JavaScript 文件,应该说是一种更简洁的方式,但 Flow 有些慢,因为 Flow 没有自己的独立文件,而是作用于 JavaScript 文件,所以处理时可以利用的信息会更少,需要做更多的分析处理。而 TypeScript 却非常快,代码提示也迅速。
TypeScript 的缺点 ?
有其他强类型语言经历的开发者一两个小时即可完全掌握但纯 JavaScript 原生没有强类型语言经历的开发者可能会有稍高的学习曲线,不过初学者可以循序渐进的增加 TypeScript 的语言特征。
编译时期静态类型推导和类型检查
学习曲线低
工具集丰富,强大生态
尤其适合大型应用和团队开发