描述
开 本: 128开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787519845964
本书首先介绍了TypeScript 的基本语法和基本的自动化工作流配置方法,然后从面向对象入手,着重介绍了面向对象的概念和它的一些*实践,并结合例子讲解了如何基于TypeScript 的类型系统应用这些*佳实践。随后剖析了TypeScript 在编译后的运行时行为,并从性能与测试的角度讲解了如何编写健壮的TypeScript 代码,所以书中还包括了性能分析与测试相关的内容。*后介绍了如何使用TypeScript 结合面向对象、MVC 等概念,结合本书前面提到的自动化的工作流、面向对象*实践、性能优化和测试等内容实现一个单页应用(SPA)框架,并用这个框架构建了一个单页应用。
学习基础知识:学习 TypeScript 的不同类型和类型运算符,了解其作用和用法。
探讨高级话题:理解 TypeScript 复杂的类型系统,学习如何安全地处理错误和构建异步程序。
联系实际应用:在你钟爱的前后端框架中使用 TypeScript,把现有的 JavaScript 项目迁移到 TypeScript,以及在生产环境中运行 TypeScript 应用。
前言
本书适合各类程序员阅读,例如JavaScript 专业工程师、C# 从业者、Java 拥护者、Python 爱好者、Ruby 偏爱者和Haskell 支持者。不管你使用什么编程语言,只要有一定的编程经验,了解函数、变量、类和错误等基础知识,就可以阅读这本书。如果你使用过JavaScript,有文档对象模型(DocumentObject Model,DOM)和网络编程经验,那就更好了。本书虽然没有深入探讨这些概念,但是将从这些方面举例。如果你不熟悉这些概念,可能无法深入领会示例的意图。
无论使用哪一门编程语言,我们都有共同的经历。为了追查异常,我们一行一行分析代码,找出问题所在,各个击破。而TypeScript 能助我们一臂之力,它会自动检查代码,指出那些逃过我们眼睛的错误。
如果你没使用过静态类型语言也没关系。笔者将教你类型的知识,告诉你如何使用类型减少程序崩溃的可能、提升代码的语义,便于多位工程师共同维护,也让应用能惠及更多的用户,能在多台服务器上弹性伸缩。在行文上,笔者将力求浅显易懂,以直观、易记的方式讲解相关概念,从实用角度出发,通过大量示例把抽象的问题讲清楚。
与其他类型语言相比,TypeScript 的特点是非常注重实用。TypeScript 发明了一套全新的概念,保证代码简洁、准确,使编写应用的过程充满乐趣,更符合现代标准,也更安全。
内容结构
本书有两个目的:一是深入讲解TypeScript 语言的原理(理论层面);二是给出大量实用的建议,助你写出更好的TypeScript 代码(应用层面)。
前面说过,TypeScript 是一门注重实用的语言,理论与应用往往是联系在一起的。本书多数篇幅将穿插讲解这两方面,不过前几章基本只讲理论,后几章则几乎只说具体应用。
本书首先介绍编译器、类型检查器和类型的基础知识。然后,分别说明TypeScript 中不同类型和类型运算符的作用和用法。掌握这些基础之后,可以深入探讨一些高级话题,比如TypeScript 为复杂的类型系统特性、错误处理和异步编程。后,说明怎样结合你喜欢的框架(前端和后端)使用TypeScript,如何把现有的JavaScript 项目迁移到TypeScript,以及如何在生产环境下运行TypeScript 应用。
本书每章的末尾都有练习题,请你尝试自己解答,这样才能更深入地领会所讲的内容。练习题的参考答案在网上,地址为https://github.com/bcherny/programming-typescript-answers。
代码风格
本书尽量一以贯之,使用同一种代码风格。笔者采用的代码风格有一部分带有强烈的个人风格,例如:
• 只在必要时使用分号。
• 使用两个空格缩进。
• 在简单的代码片段中,或者程序的结构比细节重要时,使用简短的名称命名变量,例如a、f 或_。
本书使用的编程风格,有一部分也建议你采用。比如说:
• 应该使用的JavaScript 句法和特性(版JavaScript 通常称为“esnext”)。这样能让代码符合的标准,提升代码的互操作性,便于搜索,也能减少新员工的前期投入时间。此外,还可以充分利用JavaScript 的新特性,例如箭头函数、promise 和生成器。
• 尽量使用展开运算符(…),保持数据结构不可变。注1
• 所有值都要有类型,不过尽量推导而出。切记不要滥用显式类型,让类型错误暴露出来,从而保证代码简洁、增加安全。
• 保证代码的可用性和普适性。多态(见4.2 节)是个有力的工具。
当然,这些思想都是全新的。不过,沿用这些风格对TypeScript 的正常运作有至关重要的作用。TypeScript 内置的下层编译器支持只读类型,有强大的类型推导功能,深置对多态的支持,而且具有完整的结构化类型系统,这些都促使我们使用良好的编程风格。与底层的JavaScript 相比,TypeScript 在语言层面上仍不失表现力和真实性。
在进入正文之前,还有几点要说明。
JavaScript 没有指针和引用的概念,有的只是值和引用类型。值是不可变的,包括字符串、数字和布尔值;而引用通常指向可变的数据结构,例如数组、对象和函数。本书中出现的“值”,一般不使用它的严格定义,而是指JavaScript 值或引用。
注1: 以防你没接触过 JavaScript,举个例子:假如有个对象 o ,我们想为该对象添加一个值为3 的属性 k;为此,可以直接修改 o,使用o.k = 3 句法,也可以使用 let p ={…o, k: 3} 句法,新建一个对象。
后,在与JavaScript 互操作时,使用未严格遵守类型规定的第三方库时,维护旧代码或匆匆上手时,很容易写出不太理想的TypeScript 代码。本书的主要目的是教你如何正确编写TypeScript,告诫你一定要遵守规则。但在实际中,怎么编写代码才算正确要看你自己或你的团队。
本书约定
本书采用下述排版约定。
斜体(Italic)
表示新术语、URL、电子邮件地址、文件名和扩展名。
等宽字体(Constant Width)
表示程序清单,在段落中出现则表示程序元素,例如变量、函数名、数据类型、环境变量、语句和关键字。
斜体等宽字体(Constant Width Italic)
表示应该替换成用户提供的值,或者由上下文决定的值。
使用代码示例
本书的补充材料(代码示例、练习题等)可到https://github.com/bcherny/programming-typescript-answers 下载。
本书是帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无需获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可,销售或分发O’Reilly 图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无需获得许可,将书中大量的代码放到你的产品文档中则需要获得许可。
我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和ISBN。比如:“Programming TypeScript by Boris Cherny (O’Reilly). Copyright 2019 Boris Cherny, 978-1-492-03765-1.”。
如果你觉得自己对示例代码的用法超出了上述许可的范围, 请通过
[email protected] 与我们联系。
O’Reilly Online Learning
40 年间,O’Reilly Media 为众多公司提供技术和商业培
训,提升知识储备和洞察力,为企业的成功助力。
我们有一群独家专家和创新者,他们通过图书、文章、会议和在线学习平台分享知识和技术。O’Reilly 的在线学习平台提供按需访问的直播培训课程、详细的学习路径、交互式编程环境,以及由O’Reilly 和其他200 多家出版社出版的书籍和视频。详情请访问http://oreilly.com。
联系我们
任何有关本书的意见或疑问,请按照以下地址联系出版社。
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)
奥莱利技术咨询(北京)有限公司
勘误、示例和其他信息可到https://oreil.ly/programming-typescript 上获取。
对本书的评论或技术疑问,可以发电子邮件到[email protected]。
欲了解本社图书、课程、会议和新闻等更多信息,请访问我们的网站http://www.oreilly.com。
我们的Facebook:http://facebook.com/oreilly。
我们的Twitter:http://twitter.com/oreillymedia。
我们的YouTube:http://www.youtube.com/oreillymedia。
致谢
几年间断断续续的写作和涂涂画画,加上一年的早起晚睡,以及周末和节假日的奋笔疾书,这本书才得以出版。
感谢O’Reilly 策划这样一本书,感谢编辑Angela Rufino 在整个过程中给予我的支持。感谢Nick Nance 对9.2 节的贡献,感谢Shyam Seshadri 对9.1.2 节的贡献。感谢技术编辑Daniel Rosenwasser,他是TypeScript 团队的一员,用了很多时间阅读草稿,指导我弄清了TypeScript 类型系统的方方面面。感谢Jonathan Creamer、Yakov Fain、Paul Buying 和Rachel Head 对本书做技术编辑、提供反馈。感谢我的家人Liza、Ilya、Vadim、Roza、Alik、Faina 和Yosif,感谢他们鼓励才能使我坚持完成这个项目。
感谢我的伴侣Sara Gilford,在撰写本书的过程中她始终支持我,即使取消了周末计划、写作和编程到深夜,她也没有怨言,而且主动与我讨论类型系统的复杂细节。如果没有你,我不可能写完这本书,你的支持让我铭记终生。
“这本书是深入学习TypeScript的不二之选。本书揭露了在 JavaScript的基础上使用类型系统的各种好处,详解了精通TypeScript语言的要领。”
——Minko Gechev
Google Angular 团队的工程师
“通过这本书,我快速而有效地掌握了 TypeScript 的工具和生态系统。以前我在实际使用中遇到的各种问题,在这本书中都有详细的实例讲解。‘类型进阶’一章详细解释了我过去不懂的术语,而且展示了如何利用 TypeScript 提升代码的安全性,同时保障代码易于使用。”
——Sean Grove
OneGraph 联合创始人
评论
还没有评论。