TypeScript 概览
JavaScript 是作为客户端语言引入的。Node.js 的发展将 Javascript 拓展出服务端技术。然而,随着代码量的增加,Javascript 应用变得凌乱,难以维护和复用。此外,它没有拥抱面向对象,强类型检查和编译时错误检查,这阻碍了 Javascript 发展成成熟的企业级服务端技术,TypeScript 的提出弥补了这些不足。
TypeScript 是什么?
根据定义,TypeScript 是用于应用程序级开发的 JavaScript 。TypeScript 是一种强类型,面向对象的编译语言。来自微软的 Anders Hejlsberg(C#的设计者)。TypeScript 即是一门语言也是一套工具。TypeScript 是JavaScript的类型超集。换句话说,TypeScript 是 JavaScript 升级版,增加了一些超前的东西。

TypeScript特征
TypeScript只是JavaScript TypeScript 始于JavaScript并终于 JavaScript 。 Typescript 采用了JavaScript的基础模块。于是我们只需要了解 JavaScript 就可以用 TypeScript 了。所有的TypeScript代码都可以转化为 JavaScript 运行。
TypeScript支持其他的JS库编译后的TypeScript可以被任何JavaScript代码使用。TypeScript 生成的 JavaScript 可以复用已经存在的 JavaScript 框架、工具以及库。
JavaScript就是TypeScript这意味着任何以**.js为后缀的文件都可以重命名为.ts**,并和其他 TypeScript 文件一起编译。
TypeScript可移植性强 TypeScript 可移植于浏览器、设备和操作系统,可以运行在任何JavaScript可运行的环境中。与其他语言不同的是,TypeScript 不需要虚拟机和特定的运行环境去执行。
TypeScript 和 ECMAScript
ECMAScript 规范是脚本语言的标准规范。现在第六版标准 ECMA-262 已经发版。第六版标准规范代号为 "Harmony(和谐)" 。TypeScript 向 ECMAScript6 看齐。

为什么要用 TypeScript?
TypeScript 拓展于 JavaScript 这一点是优于其对手比如 CoffeeScript 和 Dart。相反,Dart 和 CoffeeScript 是新语言,他们需要特定的语言执行环境。
TypeScript 的好处包括:
- 汇编 -- JavaScript 是解释型语言。于是,需要在测试有效再运行。意味着即使写完所有代码,却因为一点错误导致没有输出,于是要花费数小时排查bug。TypeScript 提供 错误监测 特性。TypeScript 找到语法错误会生成编译错误,这样会帮我们在运行前突出错误。
- 强静态类型 -- JavaScript 是弱类型的,TypeScript 拥有强类型和类型接口的TLS(TypeScript 语言服务)。变量如果不定义类型,TLS将基于变量值推断它的类型。
- 支持类型定义 -- TypeScript 支持对已有 JavaScript 库的类型定义。TypeScript 定义文件(以.d.ts结尾)为外部JavaScript库提供。于是,TypeScript 代码可以使用这些库。
- 支持面向对象编程 -- TypeScript 支持面向对象编程概念像 classes(类),interfaces(接口),inheritance(继承)等等。
TypeScript组件
TypeScript 的核心包括下面三个组件 -
- 语言 -- 编译语法,关键字和类型注解。
- TypeScript编译 -- TypeScript 经过编译转换使和 JavaScript 相同。
- TypeScript语言服务 -- “语言服务” 的核心公开了额外的层,它是类似编译器的应用程序。语言服务支持同一套类型编辑如:完成声明、签名帮助、代码格式化等等。

定义文件
当 TypeScript 脚本被编译,将会生成一个定义文件(以**.d.ts**)。这个文件作为编译后的 JavaScript 组件接口。定义文件的概念是类似 C/C++ 头文件的概念。这个定义文件提供了智能感知。对类型、函数调用和 JavaScript 变量,并支持像 jQuery 、MooTools 等 JavaScript 库。