Web 2.0时代的到来以及智能移动设备的普及改变了人们使用互联网的方式,Web开发也逐渐成为热门的开发领域。对JavaScript程序员来说,这既是机遇也是挑战。机遇在于它创造了大量的就业机会以及不错的职业发展前景。HTML 5技术的发展赋予了Web应用更强大的能力以及更多的可能性;Node.js让JavaScript程序的运行脱离了浏览器环境,可以在服务器端运行;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.comtstutorialcode。