《TypeScript实战指南》—1 Hello TypeScript
基 础 篇
■ 第1章 Hello TypeScript
■ 第2章 类型与函数
■ 第3章 接口与类
■ 第4章 命名空间与模块
第1章
Hello TypeScript
对于大部分前端开发者而言,TypeScript是一门新鲜且陌生的语言。既然已经有 JavaScript了,为什么还需要 TypeScript 呢? TypeScript 与 JavaScript 又有什么不同呢?
从某种严格的角度来讲,人们并不需要重复的东西,人们需要不一样的、特别的东西,就像两位面试者站在面试官前,都努力地表现出自己的差异性。
本章通过回溯 JavaScript 的发展历史来讲述 TypeScript 的差异性,希望通过梳理 TypeScript 的发展脉络,让读者了解只属于 TypeScript 的特性。
准备好了吗?就从Hello TypeScript开始吧。
1.1 引言
人们在使用一门语言之前需要对其进行多方“面试”。
你很难想象现在的前端世界竞争有多么激烈,除了长年稳坐第一的JavaScript以外,还有CoffeeScript、Dart、ClojureScript,等等,甚至“新人” Kotlin 也希望来蹭一下热度,分一杯羹。
因此,非常有必要先来看一下 TypeScript 的“个人简历”:
JavaScript 的超集。
支持 ECMAScript 6 标准,并支持输出 ECMAScript 3 / 5 / 6 标准的纯 JavaScript 代码。
支持 ECMAScript 未来提案中的特性,比如异步功能和装饰器。
支持类型系统且拥有类型推断。
支持运行在任何浏览器、Node.js 环境中。
从这份简历可以了解到,TypeScript 与 JavaScript、ECMAScript有着非常深入的联系。那么在谈论 TypeScript 之前,有必要对 JavaScript 与 ECMAScript 做一次充分的背景调查。也只有在了解了 JavaScript 与 ECMAScript 之后,我们才更有资格去谈论TypeScript 是否适合我们。
1.1.1 JavaScript 与 ECMAScript
JavaScript 是蹭热点的“网红”出身。在1995 年,它被搭载在网景浏览器中首次发布,当时名字还是 LiveScript。由于网景觉得这个名字缺乏热度,所以决定蹭一下流行的 Java的热度,最终改名叫 JavaScript。
如果非要说JavaScript与Java有什么关系的话,大概就相当于雷锋与雷峰塔的关系了。在国外程序员圈内,则喜欢用 HAM(火腿) 和 HAMSTER(仓鼠) 来比喻两者的关系,如图1-1所示。
JavaScript 的成功引起了微软的注意,其在IE 3.0上搭载了JScript。JScript也是一种JavaScript的实现,两种JavaScript语言的出现意味着浏览器端语言标准化的缺失,甚至可能进一步出现分裂状态。
图1-1 Java与JavaScript的关系就像HAM之与HAMSTER之间的关系
所以在1996 年,网景将 JavaScript 提交给ECMA International(欧洲计算机制造商协会)进行标准化,最终确定了新的语言标准,取名为 ECMAScript。
从此,所有 JavaScript 的实现都必须以 ECMAScript 标准为基础。但由于 JavaScript 的历史原因,我们仍然用 JavaScript 称呼这门语言,而用ECMAScript 称呼标准。
事情在开端的时候总是美妙的。
1997 年 ECMAScript 发布了首版标准,紧接着 1998 年 6 月发布第二版标准。但在 1999 年 12 月发布了第三版标准之后,不幸开始降临了。在接下来的 10 年里,ECMAScript再也没能为标准化做出太大的贡献,甚至不同浏览器中的实现与标准大相径庭。不仅如此,各大厂商也开始向自己的 JavaScript 里添加“私货”,比如 JScript 的 ActiveXObject。
这10年里究竟发生了什么呢?比较公允的看法是由于 ECMAScript 4 过分激进的草案导致了浏览器厂商的一致抵制。IE 和 Flash 在这一时期的强势也导致了 ECMAScript 的进一步没落。
直到2005年秋,Task Group 1 of Ecma Technical Committee 39 (TG1) 才开始定期召开会议。之后,大火的Ajax 让人们意识到了 JavaScript 的复兴,标准化工作才开始加速。
经过一系列复杂的争论,2009 年 12 月 ECMAScript 5得以发布。随后的 2012 年,国外的开发者社区推动停止对旧版本 IE 的支持工作,使得ECMAScript 5开始流行。
2015 年,ECMAScript 规范草案的委员会 TC39 决定将定义新标准的制度改为一年一次。这意味着 ECMAScript 的更新不再依赖于整个草案的完成度,而可以根据添加的特性进行滚动发布。
同年,代号为 Harmony 的ECMAScript 6,也就是耳熟能详的 ES 6,或者叫ES 2015,得以发布。Harmony(和谐)这个名字很有意思,仿佛在告诉开发者这么多年的争执与混乱终于平息。
但现在浏览器又开始拖后腿了。新特性往往很难在第一时间得到浏览器的支持,所以这一时期诞生了大量的前端工具,使开发者可以在开发环境中提前使用 ECMAScript 已发布或者还是草案的新特性。比如,Babel通过插件化的方式引入 ECMAScript的特性,并在生产环境时编译到 ES 3或ES 5 的代码。
- 点赞
- 收藏
- 关注作者
评论(0)