TypeScript 针对 JavaScript 做了什么

JavaScript 是一门非常灵活的编程语言,在了解为什么要有 TypeScript 之前,觉得还是有必要说说这个世界对 JavaScript 的误解。

JavaScript 语言特性和不足

因为 JavaScript 堪称世界上被人误解最深的编程语言。虽然常被嘲为“玩具语言”,但在它看似简洁的外衣下,还隐藏着强大的语言特性。

JavaScript 目前广泛应用于众多知名应用中,对于网页和移动开发者来说,深入理解 JavaScript 就尤为必要。

我们有必要先从这门语言的历史谈起。在1995 年 Netscape 一位名为 Brendan Eich 的工程师创造了 JavaScript,随后在 1996 年初,JavaScript 首先被应用于 Netscape 2 浏览器上。最初的 JavaScript 名为 LiveScript,但是因为一个糟糕的营销策略而被重新命名,该策略企图利用Sun Microsystem 的 Java 语言的流行性,将它的名字从最初的 LiveScript 更改为 JavaScript——尽管两者之间并没有什么共同点。

这便是之后混淆产生的根源。

敲黑板:JavaScript 和 Java 一点关系都没有,甚至可以说是 2 个完全不同的动物。

几个月后,Microsoft 随 IE 3 发布推出了一个与之基本兼容的语言 JScript。
又过了几个月,Netscape 将 JavaScript 提交至 Ecma International(一个欧洲标准化组织), ECMAScript 标准第一版便在 1997 年诞生了,随后在 1999 年以 ECMAScript 第三版的形式进行了更新,从那之后这个标准没有发生过大的改动。由于委员会在语言特性的讨论上发生分歧,ECMAScript 第四版尚未推出便被废除,但随后于 2009 年 12 月发布的 ECMAScript 第五版引入了第四版草案加入的许多特性。
第六版标准已经于 2015 年 6 月发布。

如果要说说 JavaScript 还有什么特性的话就是大致可以考虑下有:

  • 它没有类型约束,一个变量可能初始化时是字符串,过一会儿又被赋值为数字。
  • 由于隐式类型转换的存在,有的变量的类型很难在运行前就确定。
  • 基于原型的面向对象编程,使得原型上的属性或方法可以在运行时被修改。
  • 函数是 JavaScript 中的一等公民,可以赋值给变量,也可以当作参数或返回值。
  • JavaScript 的代码质量参差不齐,维护成本高,运行时错误多多。

针对 Java 程序员来说,最最头疼重要的就是 JavaScript 毫无章法的变量类型,完全不知道自己的变量是什么,和另外一个就是 JavaScript 是一种解释型的脚本语言,
与 Java 等语言先编译后执行不同, JavaScript 是在程序的运行过程中逐行进行解释。这就导致 JavaScript 的很多错误在编译的过程中无法发现,运行后又问题多多

要赶上 JavaScript, TypeScript 还有很长的路要走。