《TypeScript实战指南》—1 Hello TypeScript

举报
华章计算机 发表于 2019/06/15 16:39:45 2019/06/15
【摘要】 本节书摘来自华章计算机《TypeScript实战指南》一书中的第1章,第1.1.1节,作者是胡桓铭。

基 础 篇



■    第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语言的出现意味着浏览器端语言标准化的缺失,甚至可能进一步出现分裂状态。

 image.png

图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 的代码。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。