零、前言

自 2012 年末发布以来,TypeScript 语言和编译器已经取得了巨大的成功。它很快在 JavaScript 开发社区中留下了坚实的足迹,并不断壮大。许多大规模的 JavaScript 项目,包括 Adobe、Mozilla 和 Asana 的项目,已经决定将其代码库从 JavaScript 切换到 TypeScript。最近,微软和谷歌团队宣布将使用 TypeScript 开发 Angular 2.0,从而将 AtScript 和 TypeScript 语言合并为一种语言。

TypeScript 的这种大规模行业采用展示了该语言的价值、编译器的灵活性,以及可以通过其丰富的开发工具集实现的生产力提升。除了这种行业支持之外,ECMAScript 6 标准离出版越来越近,TypeScript 提供了一种在我们今天的应用中使用该标准的功能的方法。

用 TypeScript 编写 JavaScript 单页应用变得更加吸引人,因为 TypeScript 社区已经构建了大量声明文件。这些声明文件将大量现有的 JavaScript 框架无缝集成到 TypeScript 开发环境中,带来了更高的工作效率、早期错误检测和高级智能感知功能。

这本书是有经验的 TypeScript 开发人员以及那些刚刚开始他们的 TypeScript 旅程的人的指南。本书侧重于测试驱动开发,详细介绍了与许多流行的 JavaScript 库的集成,并深入研究了 TypeScript 的特性,将帮助您探索 JavaScript 开发的下一步。

这本书涵盖了什么

第 1 章TypeScript–工具和框架选项,通过首先查看使用 TypeScript 的各种好处,然后讨论如何设置开发环境,为开始 TypeScript 开发设置场景。

第 2 章类型、变量和函数技巧,向读者介绍 TypeScript 语言,从基本类型和类型推断开始,然后继续讨论变量和函数。

第 3 章接口、类和泛型,在前一章工作的基础上,介绍了接口、类和继承的面向对象概念。然后向读者介绍 TypeScript 中泛型的语法和用法。

第 4 章编写和使用声明文件,引导读者为现有的 JavaScript 代码构建一个声明文件,然后列出编写声明文件时最常用的一些语法。该语法旨在作为声明文件语法的快速参考指南或备忘单。

第 5 章第三方库,向读者展示了如何在开发环境中使用来自 DefinitelyTyped 存储库的声明文件。然后,它继续向读者展示如何编写与三种流行的 JavaScript 框架兼容的 TypeScript 主干、Angular 和 ExtJs。

第 6 章测试驱动开发,首先讨论什么是测试驱动开发,然后引导读者通过使用 Jasmine 库创建各种类型的单元测试的过程,包括数据驱动和异步测试。本章最后讨论了集成测试、测试报告和使用持续集成构建服务器。

第 7 章模块化介绍了 TypeScript 编译器使用的两种模块生成类型:CommonJS 和 AMD。本章向读者展示了如何构建一个与 Node 一起使用的 CommonJS 模块,然后讨论了用 Require、主干、AMD 插件和 jQuery 插件构建 AMD 模块。

第 8 章带 TypeScript 的面向对象编程讨论了高级的面向对象设计模式,包括服务位置设计模式、依赖注入和领域事件设计模式。读者将了解每种模式的概念和思想,然后展示如何使用 TypeScript 实现这些模式。

第 9 章让我们弄脏手,从头开始使用 TypeScript 和提线木偶构建单页应用。本章首先讨论页面布局和转换,使用一个纯 HTML 版本的应用。然后讨论、构建和测试将在应用中使用的底层数据模型和提线木偶视图。最后,实现状态和中介设计模式来管理页面转换和图形元素。

这本书你需要什么

您将需要 TypeScript 编译器和某种编辑器。TypeScript 编译器可以作为 Node.js 插件或 Windows 可执行文件使用;因此,它将在任何操作系统上运行。第 1 章TypeScript-工具和框架选项描述了开发环境的设置。

这本书是给谁的

无论你是一个想要学习 TypeScript 的 JavaScript 开发人员,还是一个想要将你的技能提升到一个新水平的有经验的 TypeScript 开发人员,这本书都是为你准备的。从基本到高级语言构造、测试驱动开发和面向对象技术,您将学习如何充分利用 TypeScript 语言和编译器。这本书将向您展示如何将强类型、面向对象和设计最佳实践结合到您的 JavaScript 应用中。

惯例

在这本书里,你会发现许多区分不同种类信息的文本样式。以下是这些风格的一些例子和对它们的意义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟网址、用户输入和推特句柄如下所示:“这个GruntFile.js是设置所有咕噜任务所必需的。”

代码块设置如下:

class MyClass {
    add(x, y) {
        return x + y;
    }
}

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

class MyClass {
    add(x, y) {

return x + y;

    }
}

任何命令行输入或输出都编写如下:

tsc app.ts

新术语和重要词汇以粗体显示。您在屏幕上看到的单词,例如菜单或对话框中的单词,出现在文本中,如下所示:“选择一个名称并浏览目录后,单击确定将生成一个 TypeScript 项目。”

警告或重要提示会出现在这样的框中。

类型

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者反馈对我们来说很重要,因为它有助于我们开发出你真正能从中获益的标题。

要给我们发送一般反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com) >,并在您的邮件主题中提及书名。

如果你对某个主题有专业知识,并且对写作或投稿感兴趣,请参见我们位于www.packtpub.com/authors的作者指南。

客户支持

现在,您已经自豪地拥有了一本书,我们有许多东西可以帮助您从购买中获得最大收益。

下载示例代码

您可以从您在http://www.packtpub.com的账户下载您购买的所有 Packt Publishing 书籍的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。

下载本书的彩色图片

我们还为您提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。彩色图像将帮助您更好地理解输出中的变化。您可以从以下网址下载此文件:https://www . packtpub . com/sites/default/files/downloads/b 03967 _ 9665 OS _ graphics . pdf

勘误表

尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现了错误——可能是文本或代码中的错误——如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表 提交 表格链接,并输入您的勘误表详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

盗版

互联网上版权材料的盗版是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。

请通过<[copyright@packtpub.com](mailto:copyright@packtpub.com) >联系我们,获取疑似盗版资料的链接。

我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以在<[questions@packtpub.com](mailto:questions@packtpub.com) >联系我们,我们将尽最大努力解决问题。