TypeScript实战
上QQ阅读APP看书,第一时间看更新

1.1 什么是TypeScript

TypeScript是微软公司开发的开源编程语言。它本质上是在JavaScript语言中添加了可选的静态类型和基于类的面向对象编程等新特征。TypeScript是由大神Anders Hejlsberg主导设计的。他是Turbo Pascal编译器的主要作者、Delphi、C#和TypeScript之父以及.NET的创立者,有评论说他对语言和汇编的理解全世界没几个人能超越,足见其造诣之高。

2012年10月,微软发布第一个TypeScript版本,截止到此书写作时,最新版本为TypeScript 3.3,经过多次版本的迭代,目前TypeScript语言已经日趋成熟。

维基百科(https://en.wikipedia.org/wiki/TypeScript)中整理的关于TypeScript的历史版本如表1.1所示。

表1.1 TypeScript的历史版本

那么到底什么是TypeScript呢?

TypeScript是JavaScript的超集,专门为开发大规模可扩展的应用程序而设计,且可编译为原生JavaScript的一种静态类型语言。TypeScript从命名上可以看出是由Type和Script组成的,其中Type表示是一种类型语言,可以进行静态类型检查,Script表示是兼容JavaScript的脚本语言。

编程语言中类型系统是提高代码性能的一个关键因素,类型系统对构建优化的编译器和进行语法正确性检查等非常有用。同时类型系统可以为集成开发环境(Integrated Development Environment,简称IDE )提供智能代码补全、重构和代码导航这些功能,而这背后都离不开具有类型系统的编译器。

如果希望编程语言具有可维护性,在灵活和规范之间寻求合适的度非常重要。动态语言对于开发小型项目非常有用,但大型项目需要采用严格的类型检查。Python作者Guido计划在Python语言中也添加类似TypeScript的类型系统技术。

TypeScript和JavaScript的逻辑关系可以用图1.1表示。

图1.1 TypeScript和JavaScript 的关系图

提示

虽然图1.1表示的是TypeScript包含JavaScript,但还有极少数JavaScript语法在TypeScript中不支持,如with。

在很多介绍JavaScript和TypeScript的地方都会涉及一个名词ECMAScript。这里有必要先介绍一下ECMAScript的基本概念。

ECMAScript是一种由ECMA国际(European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。ECMAScript可以理解为JavaScript的标准规范。到写本书为止有6个ECMAScript版本,具体如表1.2所示。

表1.2 ECMAScript版本

虽然ECMAScript 6有大量的更新,但是它依旧完全向后兼容以前的版本。各主流浏览器的新版本基本都支持ECMAScript 5特征,具体可以访问https://caniuse.com网址输入ES5关键词进行查询,如图1.2所示。

图1.2 ES5各浏览器支持情况

截止到写此书时,ES6的新特征仍然没有被目前所有主流浏览器所支持,所以热衷于使用ES6最新特性的开发者需要将代码转译为ES5代码。若想一睹各浏览器对于ES6特性的具体支持情况,这里推荐参考由kangax维护的ECMAScript兼容表(ECMAScript Compatibility Table),网址为https://kangax.github.io/compat-table/es6/。

TypeScript与ECMAScript 6规范一致。TypeScript设计的目标是让JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。TypeScript的语言功能除符合ECMAScript 6规范外,还包含泛型和类型注释等功能,这些功能是对ECMAScript 6规范的扩展。

提示

一般来说,TypeScript需要编译成JavaScript才能运行。

TypeScript语言具有如下特点:

● TypeScript以JavaScript为基础

TypeScript是JavaScript的超集,意味着合法的JavaScript代码(也有少数例外)可以直接保存成扩展名为.ts的文件,即可用TypeScript编译器进行编译并运行。

● TypeScript支持第三方JavaScript库

由于TypeScript在编译后就转成原生的JavaScript代码,因此第三方JavaScript框架或工具可以很方便地在TypeScript代码中进行引用。

● TypeScript是可移植的

TypeScript是可以跨浏览器、设备和操作系统进行移植的,即“一处编写,多处运行”。它可以在JavaScript的任何环境中运行,而且可以用ES6的语法来编写代码,通过配置生成ES5版本(或其他版本)JavaScript代码。

● TypeScript是静态类型语言

TypeScript是静态类型语言,可以在代码编辑阶段进行类型检查,及时发现语法等错误,以提高代码的稳定性。