目录
前言 1
第1 章 导言 9
第2 章 TypeScript 概述 . 13
2.1 编译器 .13
2.2 类型系统 15
TypeScript VS. JavaScript.16
2.3 代码编辑器设置 20
2.3.1 tsconfig.json .20
2.3.2 tslint.json .22
2.4 index.ts 23
2.5 练习题 .24
第3 章 类型全解 26
3.1 类型术语 27
3.2 类型浅谈 28
3.2.1 any .28
3.2.2 unknown 30
3.2.3 boolean 30
3.2.4 number .32
3.2.5 bigint .33
3.2.6 string 34
3.2.7 symbol .34
3.2.8 对象 .35
3.2.9 中场休息:类型别名、并集和交集.42
3.2.10 数组 .46
3.2.11 元组 .48
3.2.12 null、undefined、void 和never .51
3.2.13 枚举 .53
3.3 小结 .58
3.4 练习题 .58
第4 章 函数 60
4.1 声明和调用函数 60
4.1.1 可选和默认的参数 .62
4.1.2 剩余参数64
4.1.3 call、apply 和bind 65
4.1.4 注解this 的类型 66
4.1.5 生成器函数 68
4.1.6 迭代器 .70
4.1.7 调用签名72
4.1.8 上下文类型推导 75
4.1.9 函数类型重载 76
4.2 多态 .83
4.2.1 什么时候绑定泛型 .88
4.2.2 可以在什么地方声明泛型 .89
4.2.3 泛型推导91
4.2.4 泛型别名93
4.2.5 受限的多态 95
4.2.6 泛型默认类型 100
4.3 类型驱动开发 101
4.4 小结 .102
4.5 练习题 .103
第5 章 类和接口 104
5.1 类和继承 104
5.2 super 110
5.3 以this 为返回类型 . 111
5.4 接口 . 113
5.4.1 声明合并 115
5.4.2 实现 . 117
5.4.3 实现接口还是扩展抽象类 . 119
5.5 类是结构化类型 120
5.6 类既声明值也声明类型 .121
5.7 多态 .124
5.8 混入 .125
5.9 装饰器 .129
5.10 模拟final 类 .132
5.11 设计模式 133
5.11.1 工厂模式 133
5.11.2 建造者模式 134
5.12 小结 .136
5.13 练习题 .136
第6 章 类型进阶 138
6.1 类型之间的关系 139
6.1.1 子类型和超类型 139
6.1.2 型变 .141
6.1.3 可赋值性148
6.1.4 类型拓宽149
6.1.5 细化 .154
6.2 全面性检查 159
6.3 对象类型进阶 161
6.3.1 对象类型的类型运算符 .161
6.3.2 Record 类型 .166
6.3.3 映射类型167
6.3.4 伴生对象模式 170
6.4 函数类型进阶 171
6.4.1 改善元组的类型推导 .171
6.4.2 用户定义的类型防护措施 .172
6.5 条件类型 174
6.5.1 条件分配175
6.5.2 infer 关键字 .177
6.5.3 内置的条件类型 178
6.6 解决办法 179
6.6.1 类型断言179
6.6.2 非空断言180
6.6.3 明确赋值断言 183
6.7 模拟名义类型 184
6.8 安全地扩展原型 187
6.9 小结 .189
6.10 练习题 .190
第7 章 处理错误 192
7.1 返回null 193
7.2 抛出异常 194
7.3 返回异常 197
7.4 Option 类型 199
7.5 小结 .206
7.6 练习题 .207
第8 章 异步编程、并发和并行 . 208
8.1 JavaScript 的事件循环 .209
8.2 处理回调 211
8.3 promise:让一切回到正轨 214
8.4 async 和await 219
8.5 异步流 .220
事件发射器.221
8.6 多线程类型安全 224
8.6.1 在浏览器中:使用Web 职程.224
8.6.2 在NodeJS 中:使用子进程 .234
8.7 小结 .235
8.8 练习题 .236
第9 章 前后端框架 237
9.1 前端框架 237
9.1.1 React 239
9.1.2 Angular 6/7 246
9.2 类型安全的API .250
9.3 后端框架 252
9.4 小结 .253
第10 章 命名空间和模块 254
10.1 JavaScript 模块简史 .255
10.2 import、export .258
10.2.1 动态导入 259
10.2.2 使用CommonJS 和AMD 模块 262
10.2.3 模块模式与脚本模式 .262
10.3 命名空间 263
10.3.1 冲突 .265
10.3.2 编译输出 266
10.4 声明合并 268
10.5 小结 .269
10.6 练习题 .270
第11 章 与JavaScript 互操作 271
11.1 类型声明 272
11.1.1 外参变量声明 275
11.1.2 外参类型声明 277
11.1.3 外参模块声明 278
11.2 逐步从JavaScript 迁移到TypeScript .280
11.2.1 第一步:添加TSC 280
11.2.2 第二步(上):对JavaScript 代码做类型检查(可选) 281
11.2.3 第二步(下):添加JSDoc 注解(可选) .283
11.2.4 第三步:把文件重命名为.ts .284
11.2.5 第四步:严格要求 .285
11.3 寻找JavaScript 代码的类型信息 .286
11.4 使用第三方JavaScript .289
11.4.1 自带类型声明的JavaScript 289
11.4.2 DefinitelyTyped 中有类型声明的JavaScript 290
11.4.3 DefinitelyTyped 中没有类型声明的JavaScript 290
11.5 小结 .292
第12 章 构建和运行TypeScript . 293
12.1 构建TypeScript 项目 .293
12.1.1 项目结构 293
12.1.2 构建产物 294
12.1.3 设置编译目标 295
12.1.4 生成源码映射 300
12.1.5 项目引用 300
12.1.6 监控错误 303
12.2 在服务器中运行TypeScript .304
12.3 在浏览器中运行TypeScript .304
12.4 把TypeScript 代码发布到NPM 中 307
12.5 三斜线指令 308
12.5.1 types 指令 309
12.5.2 amd-module 指令 .310
12.6 小结 . 311
第13 章 总结 313
附录A 类型运算符 . 315
附录B 实用类型 317
附录C 限定作用范围的声明 . 319
附录D 为第三方JavaScript 模块编写声明文件的
技巧 321
附录E 三斜线指令 . 329
附录F 安全相关的TSC 编译器标志 . 331
附录G TSX . 333
· · · · · · (
收起)
2 有用 tree(3)-412 2021-04-10 23:49:38
好书!一周看完,美滋滋。学习曲线平滑,平时很多困惑的小细节(比如泛型,接口的意义)在这本书里都得到了解答。它不是按部就班的教你如写程序,而是深入浅出地介绍了ts的语言特性,编译原理,为何如此设计,并带领读者实现一些轮子。一本好的编程语言的书籍就该这么写。
0 有用 款冬君 2024-01-14 11:49:31 上海
打基础的好书,正好弥补了课上没深入讲的内容。Decorator还要再看看。
0 有用 Andrew 2020-11-23 08:24:26
后大半快速浏览
0 有用 d0r1s 2023-04-02 23:46:43 广东
终于读完,写得不错,尤其是第六章开始的类型进阶 & 十一章构建和运行 TypeScript。七章 option 那块没太看懂,亏我还学了一会的 Haskell…需要做点回顾性的笔记,不然看完容易忘。
0 有用 luke 2021-09-21 11:07:16
总体质量不错,第6章值得反复阅读理解,第11章js 迁移到ts 的教程很贴心,各种可能都考虑到了。总的来说很全全面,ts 方方面面都考虑到了,值得购买阅读收藏。