在过去的几年里,基于JavaScript
的web应用成几何数的增加。但是,目前的JavaScript
标准(ECMAScript 5
又称ES5
)是在许多年前设计出来的,面对如今大规模JavaScript
应用的复杂性时,它缺少了许多必要的特性。正是由于这些特性的缺失,一些应用的可维护性问题也暴露出来。
新一代的JavaScript
标准(ECMAScript 6
又称ES6
)的出现,旨在解决上述的可维护性问题。但它还没有完全实现,且现在我们使用的浏览器与之也不是完全兼容的。所以,ES6
标准的广泛采用,仍被认为是一个漫长的过程。
为了解决这类JavaScript
的可维护和可扩展性问题,微软花了两年时间开发出TypeScript
。并在2012年10月,公开发布了它:
“我们为需要构建和维护大型
JavaScript
程序的团队设计了TypeScript
,以满足他们的需求。TypeScript
帮助他们在软件组件之间定义接口,并且帮助理解现存JavaScript
库的行为。同时,使用 Typescript 的团队可以将代码构建成动态加载的模块,来减少命名冲突的问题。TypeScript
可选的类型系统使开发者们可以使用一些高效的开发工具和最佳实践:静态检查,基于符号的导航,代码补全和代码重构” -TypeScript
语言特性 1.0
即使是具有多年丰富经验的开发者,也很难给出大规模JavaScript
应用明确的定义。当谈及这个话题时,我们应该避免使用代码行数来作为评判标准,而是应该以代码中的模块的数量,模块之间的依赖关系来评判应用的规模。我们将大规模应用定义为,需要众多开发者一同维护且具有一定复杂度的程序。
《TypeScript 指南》将会运用简单且易于理解的形式来介绍TypeScript
众多的特性。当你读完本书时,你应当知晓用TypeScript
构建大型JavaScript
应用所需的所有知识。本书不但提供了TypeScript
核心特性的介绍,还会带领你探索一些有用的工具,代码设计守则,最佳实践以及如何将它们用于生产环境中。
第一章,TypeScript
简介,介绍TypeScript
的核心特性,包括可选的静态类型提醒系统,操作符,函数,接口和模块。同时还会附有在实际环境中使用它们的例子。
第二章,自动化工作流程,介绍一些自动化工具,如Gulp
和Karma
,用以最大化开发者的生产力。另外,该章还会介绍一些在开发TypeScript
应用时,有助于你使用第三方库的工具。
第三章,函数的使用,深入探讨TypeScript
中的函数。为了成为一个精通TypeScript
的开发者,本章还会告诉你关于异步编程,你需要知晓的一些。
第四章,TypeScript
中的面向对象编程,深入探讨TypeScript
中的面向对象编程,包含类,接口和模块。并且推荐一些最佳实践(SOLID原则[1])。还会包括如继承,混入和泛型,它们都有助于增强我们代码的可复用性。
第五章,运行时,帮助你理解TypeScript
运行时的工作机制,将会有助于我们避免一些潜在的性能问题。使得我们成为更高效的TypeScript
开发者。
第六章,应用性能,讲解高效运用可用的系统资源的必要知识。这一章还会阐述测试TypeScript
应用性能的方法,以及如何自动化一些用于提升TypeScript
应用性能的任务。
第七章,应用测试,介绍如何使用TypeScript
测试工具来进行BDD(行为驱动开发)测试。在这一章,你将会学习到如何使用Karma
、Mocha
、Chai
和Sinon.JS
来编写TypeScript
单元测试,如何使用Nightwatch.js
编写端对端测试,以及如何使用Istanbul
来生成测试覆盖率报告。
第八章,装饰器,深入探讨装饰器,包括类,属性,参数和方法装饰器。该章还会包括关于反射 API 的介绍。
第九章,应用架构,介绍一些现代 web 应用的核心架构原则。该章会介绍单页面 web 应用的概念,以及它的通用组件和特性(模型,视图,控制器,路由,模板等等)。该章还会通过实现一个单页面web应用框架,来阐述你所需知道的一切。
第十章,汇总,通过使用TypeScript
以及本书其他章节所提到的概念,来实现一个单页面web应用。
本书中的例子都将使用TypeScript 1.5
编写。你需要TypeScript
编译器和一个文本编辑器。本书将会说明如何使用Atom
,但是你也可以使用其他的编辑器,如Visual Studio 2015
,Visual Studio Code
或Sublime Text
。
你还需要一个能够上网的环境来下载一些必要的依赖引用、包和库,如jQuery
、Mocha
和Gulp
。在一些操作系统下安装本书中的一些工具,你可能还需要一个拥有管理员权限的账号。第二章,自动化你的工作流程,将会指导你建立起开发环境。
如果你是一个想要学习TypeScript
来编写漂亮的web应用的中等水平JavaScript
开发者,那么本书正适合你。你只需对jQuery
的基本概念有所了解。
为了让你能最大化地运用TypeScript
语言和其编译器,本书将会由浅入深地介绍TypeScript
的语言结构和面向对象特性。本书还将展示,如何使用强类型,面向对象原则,设计模式和一些最佳实践来轻松管理复杂的大规模JavaScript
应用。
本书将会使用不同的书写风格来区分不同种类的信息。以下是这些风格的例子和它们的意义。
小段文本代码,数据库表名,文件夹名,文件名,文件扩展名,路径名,URL,用户输入和推特用户定位(Twitter handles)将会用以下风格书写:"我们可以通过include
指令将其它上下文包含进来."
代码块则将会是这样的风格:
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
} }
如果我们希望向你强调代码块中的一部分,那么它们将会以粗体展示:
function MathHelper() { /* ... */ } // class method MathHelper.areaOfCircle = function(radius) { return radius * radius * this.PI; } // class property MathHelper.PI = 3.14159265359;
任何命令行的输入和输出将是以下这样的: git clone https://github.com/user-name/repository-name.git
新概念和关键字都会以粗体展示。你将从屏幕上看到的单词,例如,在菜单或对话框中的文字,将会以以下方式展示:"在这个标签,我们可以选择 Create JavaScript CPU Profile 然后点击 Start 按钮开始搜集CPU用量信息."
[图片] 警告和关键提醒将会在这样的对话框中。
[图片] 小提示和小技巧将会在这样的对话框中。
我们总是欢迎读者的反馈。如果你喜欢或不喜欢这本书,请让我们知晓。用户的反馈对于我们来说总是非常重要的。它使我们理解对于读者最有用的东西。
如果想要给我们发送你的反馈,你只需向[email protected]
发送电子邮件。并在标题里附上书的名字。
如果有你擅长的话题,并且你有兴趣写一本书或参与它的编写。请参阅www.packtpub.com/authors
。
如果你购买了一本Packt
书籍,我们还将提供一些其他与该书相关的服务。
你可以使用你的账号,从http://www.packtpub.com
上,下载所有你购买过的书中的示例代码。如果你在别处购买了本书,你可以登录http://www.packtpub.com/support
,然后进行注册,我们会将示例代码文件以电子邮件的形式发送给你。
尽管我们已经尽最大努力来保证书中内容的准确无误,但错误仍有可能发生。如果你在我们的内容或代码中发现了错误,我们十分欢迎你将它报告给我们。这样做的话,你就免去了其他读者在读到它们时产生的困惑,并且帮助了我们改进该书的下一版。如果你发现了错误,请登录http://www.packtpub.com/submit-errata
,选择书的名字,点击勘误链接,然后填入错误的详细信息。一旦你报告的错误被我们接受,那么该错误的信息将会被更新在我们的网站上,并且添加在该书的所有相关错误列表中。
如果想要看到已经被知晓的错误,请登录https://www.packtpub.com/books/content/support
,然后输入书名进行搜索。就能看到相关的勘误信息。
在所有互联网媒体中,版权问题都是一个日益严重的问题。在Packt
,我们非常重视保护我们的版权。如果你在任何地方看到本书的非法拷贝,请立刻将链接或网站名告诉我们,我们会立刻寻求解决办法。
请将可疑的侵权网站链接,发送至[email protected]
。
我们将会对你的保护我们作者的行为表示感激。
如果你有关于本书的疑问,请通过[email protected]
联系我们。我们将会尽最大努力解决。
[1]SOLID原则:在面向对象编程和面向对象设计中的五个基本原则,即单一功能、开闭原则、里氏替换、接口隔离以及依赖反转。