1.2 为什么要学习TypeScript

任何一门语言的诞生和发展都是有缘由的,从某种程度上来说,TypeScript语言的诞生是历史发展的必然。目前Web应用越来越复杂,必然导致JavaScript代码的快速增长。

由于目前各主流浏览器中的JavaScript引擎还没有完全实现ES6的特征,如JavaScript模块导入与导出和面向对象编程中的类与接口等。另外,JavaScript是一种动态语言,很难做到静态类型检查。这将导致很多JavaScript语法问题在编码阶段无法暴露,而只能在运行时暴露。

在这种背景下,微软使用Apache授权协议推出开源语言TypeScript,增加了可选类型、类和模块等特征,可编译成标准的JavaScript代码,并保证编译后的JavaScript代码兼容性。另外,TypeScript是一门静态类型语言,本身具有静态类型检查的功能,很好地弥补了JavaScript在静态类型检查上的不足。

因此,TypeScript非常适合开发大规模可扩展的JavaScript应用程序。这也是我们要学习TypeScript的主要原因。换句话说,学习TypeScript可以让开发和维护大规模可扩展的JavaScript应用程序以满足目前日益复杂的Web应用对JavaScript的要求。

不能说TypeScript有多牛,只能说TypeScript顺应了时代。TypeScript带有编译期类型检查,在编写大规模应用程序的时候有明显优势,更容易进行代码重构和让别人理解代码的意图。TypeScript语言从C#语言中继承了很多优雅的设计,比如枚举、泛型等语言特性,这让TypeScript在语法上更加优雅。

1.2.1 TypeScript与JavaScript对比有什么优势

TypeScript和JavaScript的关系实际上就像Java和Groovy的关系,一个静态,一个动态,前者稳健,后者灵活。

JavaScript是一种脚本语言,无须编译,基于对象和事件驱动,只要嵌入HTML代码中,就能由浏览器逐行加载解释执行,JavaScript的语法虽然简单,但是比较难以掌握,使用的变量为弱类型,比较灵活。

TypeScript是微软开发和维护的一种具有面向对象功能的编程语言,是JavaScript的超集,可以载入JavaScript代码运行,并扩展了JavaScript的语法。TypeScript增加了静态类型、类、模块、接口和类型注解等特征。

概括起来,TypeScript与JavaScript相比,主要具有以下优势:

● 编译时检查

TypeScript是静态类型的语言,静态类型可以让开发工具(编译器)在编码阶段(编译阶段)即时检测各类语法错误。对于任何一门语言来说,利用开发工具即时发现并提示修复错误是当今开发团队的迫切需求。有了这项功能后,就会让开发人员编写出更加健壮的代码,同时也提高了代码的可读性。

● 面向对象特征

面向对象编程可以更好地构建大规模应用程序,通过对现实问题合理的抽象,可以利用面向对象特征中的接口、类等来构建可复用、易扩展的大型应用程序。TypeScript支持面向对象功能,可以更好地构建大型JavaScript应用程序。

● 更好的协作

当开发大型项目时,会有许多开发人员参与,此时分模块开发尤其重要。TypeScript支持分模块开发,这样可以更好地进行分工协作,最后在合并的时候解决命名冲突等问题,这对于团队协作来说是至关重要的。

● 更强的生产力

TypeScript遵循ES6规范,可以让代码编辑器(IDE)实现代码智能提示,代码自动完成和代码重构等操作,这些功能有助于提高开发人员的工作效率。

提示

不是任何规模的Web应用都适合用TypeScript,对于小规模应用JavaScript可能更合适。

1.2.2 TypeScript给前端开发带来的好处

鉴于前面阐述的TypeScript语言的设计初衷,以及相比JavaScript的若干优势,可以概括出TypeScript给前端开发带来的好处:

● 提高编码效率和代码质量

传统的JavaScript在编写代码时,往往比较痛苦的是没有一个很好的编辑器(IDE),可以像C#或者Java那样,IDE对代码进行智能提示和语法错误检查,从而导致JavaScript代码在编码阶段很难发现潜在的错误。

TypeScript是一种静态类型语言,可以让编辑器实现包括代码补全、接口提示、跳转到定义和代码重构等操作。借助编辑器,可以在编译阶段就发现大部分语法错误,这总比JavaScript在运行时发现错误要好得多。

● 增加了代码的可读性和可维护性

一般来说,理解C#代码或者Java代码会比JavaScript代码更加容易,因为C#或Java语言是强类型的,且支持面向对象特征。强类型语言本身就是一个很好的说明文档,大部分函数可以看类型定义就大致明白如何使用。JavaScript很多库中利用了不少高级语言特征,开发人员可能无法很好地理解其意图。

● 胜任大规模应用开发

TypeScript是具有面向对象特征的编程语言,在大规模应用开发中,可以利用模块和类等特征对代码进行合理规划,达到高内聚低耦合的目的。TypeScript可以让复杂的代码结构更加清晰、一致和简单,降低了代码后续维护和升级的难度。因此,在面对大型应用开发时,使用TypeScript往往更加合适。

● 使用最先进的JavaScript语法

TypeScript语法遵循ES6规范,由于其语法和JavaScript类似,因此前端从JavaScript转入TypeScript会感觉差异并不大,降低了TypeScript的学习难度。TypeScript更新速度较快,不断支持最新的ECMAScript版本特性,以帮助构建强大的Web应用。

TypeScript可以让前端开发人员利用先进的JavaScript功能去编写代码,然后通过编译,自动生成针对ES5或者ECMAScript 3环境的JavaScript,让先进的技术落地。