书籍 编程与类型系统的封面

编程与类型系统

[美]弗拉德·里斯库迪亚(Vlad Riscutia)

出版时间

2021-01-01

ISBN

9787111670513

评分

★★★★★

标签

编程

书籍介绍

【关于本书】

本书旨在告诉你如何使用类型系统编写更好、更安全的代码。虽然大部分介绍类型系统的图书更加关注形式方面的讨论,但本书采用了偏向实用的做法。本书包含你在日常工作中可能遇到的许多示例、应用和场景。

【读者对象】

本书主要针对想要学习类型系统的工作原理以及使用类型系统来提高代码质量的程序员。你应该具备一些使用面向对象编程语言(如Java、C#、C++或JavaScript/TypeScript)的经验,还应该有一些软件设计经验。虽然本书的代码示例是基于TypeScript的,但是大部分内容是普遍适用的。事实上,本书的代码示例并非总是使用TypeScript特有的功能。在编写代码示例时,我尽可能让熟悉其他编程语言的程序员也容易理解它们。虽然本书会介绍各种技术来帮助你编写健壮的、可组合的、封装程度更好的代码,但是也假定了你知道为什么我们希望获得这些特性。此外,本书侧重类型系统的实际应用,因此涉及的数学理论较少,但是你应该熟悉基本的代数概念,如函数和集合等。

【本书的组织方式】

本书包含11章,涵盖类型编程的各个方面。

第1章介绍类型和类型系统,讨论它们为什么存在以及为什么有用。我们将讨论类型系统的类型,并解释类型强度、静态类型和动态类型。

第2章介绍大部分语言中都有的基本类型,以及在使用这些类型时需要注意的地方。常用的基本类型包括空类型、单元类型、布尔类型、数值类型、字符串类型、数组类型和引用类型。

第3章介绍组合,包括把类型组合起来定义新类型的各种方式,还介绍实现访问者设计模式的不同方式,并定义代数数据类型。

第4章讨论类型安全—如何使用类型来减少歧义以及防止错误。本章还介绍如何使用类型转换在代码中添加或移除类型信息。

第5章介绍函数类型,以及当我们获得了创建函数变量的能力后能够做些什么,还展示实现策略模式和状态机的不同方式,并介绍基本的map()、filter()和reduce()算法。

第6章以前一章为基础,展示函数类型的一些高级应用,包括简化的装饰器模式、可恢复的函数和异步函数。

第7章介绍子类型,并讨论类型兼容。我们会看到顶层类型和底层类型的应用,以及从子类型的角度看,和类型、集合和函数类型之间的关系。

第8章介绍面向对象编程的关键元素,以及什么时候使用每种元素,并讨论接口、继承、组合和混入。

第9章介绍泛型编程及其第一种应用—泛型数据结构。泛型数据结构把数据的布局与数据本身分隔开。迭代器支持遍历这些数据结构。

第10章继续介绍泛型编程,讨论泛型算法及迭代器的分类。泛型算法是能够在不同数据类型上重用的算法。迭代器用作数据结构和算法之间的接口,并且能够根据迭代器的能力启用不同的算法。

第11章介绍高阶类型、函子和单子的概念,以及如何使用它们,并为进一步学习提供一些建议。

本书中的各章以前面章节中的概念作为基础,故建议读者按顺序阅读。虽然如此,但是本书介绍的4大主题相对独立:前4章介绍基础知识;第5~6章介绍函数类型;第7~8章介绍子类型;第9~11章介绍泛型编程。

目录
第1章 类型简介1
1.1 为什么存在类型2
1.1.1 0和12
1.1.2 类型和类型系统的定义3
1.2 类型系统的优点4

显示全部
用户评论
内容全面,很有引导意义。特别是函数类型和泛型类型相关章节。
奔着类型体操去的, 然而全篇都是挺浅的, 这书优点在于浅显以及使用了非常容易验证的TypeScript
实际上就是类型理论的 typescript 例子,优点是例子组织得好,简单易懂,缺点当然是概念没讲透(第十一章的函子和单子最为明显)。我打算继续读 Category Theory for Programmers 作为主题阅读的下一步。
看过typescript编程的我表示,好贵呀,一点都不值,两倍的价格没人家一半好,当涨个教训吧
后2章有点拉垮,但仍是一本很好理解的且对理解TS类型有帮组的书。
呃呃 机翻感严重,而且没有太多类型体操的内容,买错了😭
看完第3章了 能感受到作者想用类型这个线索把ts串起来 但是翻译的一些例如“变体”这样的专有名词和语法结构实在费解 看完之后还是很遗憾上了书名的当 副标题才是重点
对类型系统本身的描述太少也太浅,主要写的是ts这门语言。
和预想的不一样,最后一章没搞懂