前言

Web 2.0 时代的到来以及智能移动设备的普及改变了人们使用互联网的方式,Web 开发也逐渐成为热门的开发领域。对 JavaScript 程序员来说,这既是机遇也是挑战。

机遇在于它创造了大量的就业机会以及不错的职业发展前景。HTML 5 技术的发展赋予了 Web 应用更强大的能力以及更多的可能性;Node.jsJavaScript 程序的运行脱离了浏览器环境,可以在服务器端运行;Electron 解决方案的出现大大简化了跨平台桌面应用程序的开发工作;TensorFlow.js 平台将 JavaScript 语言与机器学习联系在了一起。

那么,挑战又有哪些呢?首先,业务场景变多了,业务逻辑也变复杂了,JavaScript 工程的规模在以肉眼可见的速度膨胀。其次,JavaScript 这门语言是一门弱类型的动态脚本语言,设计初衷并非用于大规模网页应用程序的开发。当我们以现在的眼光来看待这门语言时,会发现它自身有很多不足之处。在 JavaScript 程序开发过程中,开发者稍不留神就可能引入难以察觉的缺陷。虽然 JavaScript(ECMAScript) 语言标准制定组织(TC39)一直在不断地完善这门语言,但这并不意味着开发者能够很快地在日常开发中应用这些新特性,因为需要运行时环境的支持。这也是困扰 Web 开发者已久的难题之一,即浏览器兼容性问题。最后,我们再看看生产力的问题。现如今许多项目都在使用敏捷开发方法来应对变化并频繁地交付。在使用 JavaScript 语言进行开发的过程中,像 “跳转到定义” 和 “重命名标识符” 等常用的操作都没有很好的工具支持,这也给开发与维护大型 JavaScript 程序增添了一些困难。

针对这些问题已经有不少解决方案,但在众多的解决方案中,TypeScript 语言脱颖而出。TypeScript 语言以平滑的方式为 JavaScript 语言添加了强类型并提供了强大的开发者工具。TypeScript 语言是 JavaScript 语言的超集,沿用了 JavaScript 语言的语法和语义,极大地降低了学习成本以及程序迁移的成本。本书将系统地介绍 TypeScript 编程语言的基础知识。在 TypeScript 语言的知识结构中至少包含了以下两大部分:

  • JavaScript 语言编程。

  • TypeScript 新增的语言特性以及核心的类型系统。

原则上,若想全面地了解 TypeScript 语言,就需要掌握 JavaScript 语言的所有知识,因为 TypeScript 语言包含了 JavaScript 语言的全部知识。本书会对 JavaScript 语言的基础知识进行概括的介绍,目的是让缺少 JavaScript 语言开发经验的读者也能够理解 TypeScript 语言。目前已经有很多讲解 JavaScript 语言的经典书籍,如 《JavaScript 权威指南(原书第 6 版)》和《深入理解 ES6》等。

TypeScript 新增的语言特性以及核心的类型系统是本书的重点,我们将使用大部分篇幅来介绍这部分知识。本书是基于 TypeScript 3.8 版本编写的。

本书适合正在考虑使用或已经开始使用 TypeScript 的读者阅读,也适用于所有有兴趣了解 TypeScript 这门语言的读者。在阅读本书之前,读者最好至少了解一门编程语言,也可先去学习一下 JavaScript 语言基础。

本书主要内容如下:

第一篇 “初识 TypeScript” 包括第 1~2 章,介绍 TypeScript 诞生的背景及其特点,搭建了 TypeScript 语言的开发环境并完成了第一个 TypeScript 程序。

第二篇 “TypeScript 语言概览” 包括第 3~4 章,介绍 JavaScript 语言的基础知识,以及 JavaScript 语言中一些较新的特性。

第三篇 “TypeScript 类型系统” 包括第 5~7 章,详细讲解 TypeScript 的核心类型系统。

第四篇 “TypeScript 应用” 包括第 8~9 章,介绍 TypeScript 工程配置的管理以及与开发工具的集成。

在阅读本书时,如果读者已经掌握了 JavaScript 语言的知识,那么可以跳过“TypeScript 语言概览” 部分,从 “TypeScript 类型系统” 部分开始阅读。否则,建议读者按顺序阅读,同时还可以配合使用其他资料来深入了解 JavaScript 语言。

本书中的所有代码均使用等宽字体表示并且带有行号,所有示例代码均可在 GitHub 网站上找到,地址为 https://github.com/tstutorial/code