Programming with Types - 编程与类型系统
图书信息
英文书名:Programming with Types: Examples in TypeScript
中文书名:编程与类型系统
作者:[美] Vlad Riscutia
译者:赵利通
页数:正文 292 页 / 附录 6 页
英文出版社:Manning Publications
中文出版社:机械工业出版社 / 华章图书
出版日期:英文原版 2020 / 简体中文版 2021
个人分类:类型系统 / TypeScript
ISBN:978-7-111-67051-3
书评
写于 2023 年 5 月 21 日。
书的内容挺对得起它的英文名《Programming with Types》,讲述了一些与类型相关的基本概念,给读者讲述了如何使用类型让编程变得更加安全。和类型(Sum Type)、积类型(Product Type)、子类型、函数类型、与异步有关的一些类型、迭代器、生成器、泛型等,也都涉及了。作为一个入门倒是挺合适的,比较适合之前没有系统接触过这块的读者留下一个比较系统的印象。当然,这内容肯定对不起《编程与类型系统》这个中文名,这深度看起来还达不到一本专门讲 Type System 的书该有的水平。
另外,这本书不是讲 TypeScript 的,条件类型、递归类型完全没有涉及,更别说 infer 等特性。全书只是将 TS 当作一个媒介,用于科普与类型相关的一些概念。并且很奇怪的是,书中使用的 TS 似乎基于一个相对陈旧的版本,书中提到 TS 的函数参数是双变的,这有些奇怪,因为 TS 自 2.6 之后函数参数在严格模式下就是逆变的了,而这书英文版出版于 2020 年,显然不合适。另外还有一些小错误,例如说 TS 不支持函数重载等。但总体没看到什么其他错误。
书的前面几章是比较乏味的,中间的子类型一章还不错,算是比较系统地讲了一下相关的基本知识,其中穿插的一些和范畴论有关的小拓展也有些意思,后面讲到泛型和迭代器的地方对我而言还是挺新奇的,因为我个人平时很少使用相关的写法,不过对于老练的 C++ 使用者这块估计就十分乏味了。
最后一章简单讲了一些来自函数式编程的理念,高阶类型、Functor、Monad 之类,但是我个人感觉要是读者完全没有这方面的了解这块东西估计不太能读得懂。不过最后一章拓展阅读里推荐的几本书倒是不错,打算之后看看。
对我而言,这本书总体上还是比较乏味的。有几章值得看看,但总体上没什么意思,于我看来都是老生常谈的话题,和目前网上太多浅薄的函数式编程入门教程相比并没有太多深入。可以看出作者确实想讲一些东西,但真写出来,又未免显得有些浅薄。总体来说可以一读,但不必细读。
最后更新于