JavaScript曾是作为客户端语言引入的。Nodejs的到来让JavaScript成为服务器端语言的新星。然而,随着JS代码的增长,它变得更加混乱,较难去维护和重用代码。除此之外,它没有采用面向对象,强类型检测以及编译时错误检查等特性,这些造成了js很难在企业级应用有所发展。TypeScript 就是用来弥补这些短板。
根据定义,“TypeScript是用于应用程序规模级开发的JavaScript”。
TS是强类型,面向对象,编译型的语言。他是微软的Anders Hejlsberg(C#的设计者)设计的。TS是一门语言,也是一个工具集。TS是JS的超集,TS能编译成普通的JS。换句话说,TS等于JS加上一些额外的特性。
TypeScript的特性
TS也还是JS 。TS从JS开始,从JS结束。TS采用JS的基础结构,因此你只需要知道JS就能去用TS了。所有TS代码为了能够跑起来都会转成JS等效代码。
TS支持其它JS库 。 可以从任何JS代码里运行编译后的TS。由TS生成的JS代码能够重用所有已有的JS类库,工具和库。
JS是TS 。 这个意思是任何有效的.js文件都能够重命名成.ts文件,并且和其他TS文件一起编译。
TS是可移植的 。TS能够运行在任何JS可以运行的地方(跨浏览器,设备,操作系统)。和别的同类型语言不同,TS不需要专用虚拟机或者指定的运行环境。(有点争议,对比场景不太一样,而且浏览器其实也就是运行环境吧。。。)
TypeScript和ECMAScript
ECMAScript规范是脚本语言的一种标准。ECMA-262已经有6个版本发布了。V6代号为“Harmony”。TypeScript与ECMAScript 6规范一致。
TS采用ECMAScript5规范作为其基本语言特征,也就是javascript的官方标准。TS的那些模块化以及面向对象的特性符合EcmaScript 6的标准。另外,TS还包含泛型和类型注释等功能,这些功能不属于EcmaScript规范。
为什么用TypeScript?
从 TS是JS的扩展 这一点来说,TS比其它同类型语言像CoffeeScript和Dart语言更好。相比之下,像Dart这样的语言本身就是新语言,需要特定的执行环境。
TS的好处包括:
- 编译 —— JS是一门解释型语言。因此,需要跑起来后来测试它的正确性。这意味着你写了所有的代码后即使有错误也不会有任何输出(来告诉你)。然后,你可能要花很长时间来查问题。TS编译器提供了错误检查的特性。如果发现某种语法错误,TS将编译代码并生成编译错误。这有助于在脚本运行前就暴露错误。
- 强静态类型 —— JS不是强类型的。TS通过TLS(TypeScript Language Service)提供可选的静态类型和类型推断系统。TLS能够推断出无类型变量的类型。
- TS支持已有的JS库的类型定义。TS的描述文件(以.d.ts扩展名结尾)能够为现有的JS库提供描述。因此,TS能够引用这些库。
- TS支持面向对象编程概念,比如类,接口,继承等等。。。
TypeScript的组件
TS的核心有以下3个:
- 语言 —— 包含语法,关键词,类型注释。
- TS编译器 —— TS编译器(tsc)把TS写的指令转成等效的JS代码。
- 类型脚本语言服务 —— 这个“语言服务”是在核心编译器外围开设了一个新的层面的东西,差不多是给编辑器使用的。它支持常见的编辑器操作,如语句补全,签名帮助,代码格式化以及高亮等。
描述文件
描述文件(.d.ts文件),作用是从js中抽象出组件描述。这个概念类似于C/C++的头文件。声明文件可以为jQuery,MooTools等JS库提供类型,函数调用的智能感知(比如代码补全等)。