Learning TypeScript中文版首先介绍了TypeScript 的基本语法和基本的自动化工作流配置方法,然后从面向对象入手,着重介绍了面向对象的概念和它的一些最佳实践,并结合例子讲解了如何基于TypeScript 的类型系统应用这些最佳实践。随后剖析了TypeScript 在编译后的运行时行为,并从性能与测试的角度讲解了如何编写健壮的TypeScript 代码,所以书中还包括了性能分析与测试相关的内容。最后介绍了如何使用TypeScript 结合面向对象、MVC 等概念,并配合本书前面提到的自动化的工作流、面向对象最佳实践、性能优化和测试等内容实现一个单页应用(SPA)框架,并用这个框架构建了一个单页应用。
《Learning TypeScript中文版》适合使用TypeScript 来构建大型Web 应用的开发人员。
目录
- 前言 .................................... XVIII
- 1 TypeScript简介 .................. 1
- TypeScript的架构 ........................... 1
- 设计目标 ................................. 1
- TypeScript组件 ...................... 3
- TypeScript语言特性 ....................... 4
- 类型 ......................................... 6
- 变量、基本类型和运算符 ..... 7
- 流程控制语句 ....................... 14
- 函数 ....................................... 18
- 类 ........................................... 20
- 接口 ....................................... 22
- 命名空间 ............................... 22
- 综合运用 ....................................... 23
- 小结 ... 25
- 2 自动化工作流程 ................ 26
- 一个现代化的开发工作流程 ....... 26
- 准备工作 ....................................... 27
- Node.js ................................... 27
- Atom ...................................... 27
- Git和 GitHub ........................ 30
- 版本控制工具 ............................... 30
- 包管理工具 ................................... 34
- npm ........................................ 35
- Bower..................................... 38
- tsd .......................................... 38
- 自动化任务工具 ........................... 39
- 检查 TypeScript代码的质量 41
- 编译 TypeScript代码 ............ 42
- 优化 TypeScript应用 ............ 44
- 管理 Gulp任务的执行顺序 . 48
- 自动化测试工具 ........................... 50
- 使跨设备测试同步 ....................... 52
- 持续集成工具 ............................... 55
- 脚手架工具 ................................... 56
- 小结 ... 58
- 3 使用函数 .......................... 59
- 在 TypeScript中使用函数 ............ 60
- 函数声明和函数表达式 ....... 60
- 函数类型 ............................... 61
- 有可选参数的函数 ............... 62
- 有默认参数的函数 ............... 63
- 有剩余参数的函数 ............... 64
- 函数重载 ............................... 66
- 特定重载签名 ....................... 67
- 函数作用域 ........................... 68
- 立即调用函数 ....................... 71
- 范型 ....................................... 74
- tag函数和标签模板 ............. 77
- TypeScript中的异步编程 ............. 78
- 回调和高阶函数 ................... 79
- 箭头函数 ............................... 79
- 回调地狱 ............................... 81
- promise .................................. 86
- 生成器 ................................... 91
- 异步函数——async和 await 93
- 小结 ... 93
- 4 TypeScript中的面向对象编程 ...................................... 94
- SOLID 原则 ................................. 95
- 类 ....... 95
- 接口 ... 99
- 关联、聚合和组合 ..................... 100
- 关联 ..................................... 100
- 聚合 ..................................... 100
- 组合 ..................................... 100
- 继承 . 101
- 混合 ..................................... 104
- 范型类 ......................................... 109
- 范型约束 ..................................... 113
- 在范型约束中使用多重类型 ......................................... 117
- 范型中的 new操作 ........... 118
- 遵循 SOLID原则 ....................... 118
- 里氏替换原则 ..................... 118
- 接口隔离原则 ..................... 120
- 依赖反转原则 ..................... 122
- 命名空间 ..................................... 122
- 模块 . 124
- ES6模块——运行时与程序设计时 .............................. 126
- 外部模块语法——仅在程序设计阶段可用 .................. 127
- AMD 模块定义语法——仅在运行时使用 .................. 128
- CommonJS 模块定义语法——仅在运行时使用 ......... 129
- UMD模块定义语法——仅在运行时使用 ................... 130
- SystemJS模块定义 ——仅在运行时使用 ..................... 131
- 循环依赖 ..................................... 131
- 小结 . 133
- 5 运行时 .............................134
- 环境 . 135
- 运行时的一些概念 ..................... 135
- 帧 ......................................... 136
- 栈 ......................................... 137
- 队列 ..................................... 137
- 堆 ......................................... 137
- 事件循环 ............................. 137
- this操作符 .................................. 138
- 全局上下文中的 this操作符 .......................................... 139
- 函数上下文中的 this操作符 .......................................... 139
- call、apply和 bind方法 ..... 140
- 原型 . 143
- 实例属性与类属性的对比 . 144
- 基于原型的继承 ................. 147
- 原型链 ................................. 151
- 访问对象的原型 ................. 152
- new操作符 .......................... 153
- 闭包 . 153
- 闭包和静态变量 ................. 155
- 闭包和私有成员 ................. 157
- 小结 . 159
- 6 应用性能 .........................160
- 准备工作 ..................................... 160
- 性能和资源 ................................. 161
- 性能指标 ..................................... 162
- 可用性 ................................. 162
- 响应时间 ............................. 162
- 处理速度 ............................. 162
- 延迟 ..................................... 162
- 带宽 ..................................... 163
- 可伸缩性 ............................. 163
- 性能分析 ..................................... 163
- 网络性能分析 ..................... 163
- 网络性能与用户体验 ......... 168
- GPU性能分析 .................... 172
- CPU性能分析 .................... 174
- 内存性能分析 ..................... 176
- 垃圾回收器 ......................... 178
- 性能自动化 ................................. 178
- 性能优化自动化 ................. 178
- 性能监测自动化 ................. 179
- 性能测试自动化 ................. 180
- 错误处理 ..................................... 180
- Error类 ................................ 181
- try…catch 语句和 throw 语句 ..................................... 182
- 小结 . 182
- 7 应用测试 .........................183
- 软件测试术语表 ......................... 183
- 断言 ..................................... 184
- 测试规范 ............................. 185
- 测试用例 ............................. 185
- 测试套件 ............................. 185
- 测试监视 ............................. 185
- 替身 ..................................... 185
- 测试桩 ................................. 185
- 模拟 ..................................... 185
- 测试覆盖率 ......................... 186
- 必要的准备 ................................. 186
- Gulp ..................................... 187
- Karma .................................. 187
- Istanbul ................................ 187
- Mocha .................................. 187
- Chai ...................................... 188
- Sinon.JS ............................... 188
- 类型定义 ............................. 188
- PhantomJS ........................... 189
- Selenium和 Nightwatch.js 189
- 测试计划和方法 ......................... 190
- 测试驱动开发 ..................... 190
- 行为驱动测试 ..................... 191
- 测试计划和测试类型 ......... 191
- 建立测试基础结构 ..................... 192
- 使用 Gulp构建这个程序 ... 193
- 使用 Karma运行单元测试 197
- 使用 Selenium和 Nightwatch.js运行 E2E测试 ........... 200
- 使用 Mocha和 Chai创建测试断言、规范和套件 ............... 203
- 测试异步代码 ..................... 207
- 断言异常 ............................. 208
- Mocha和 Chai的 TDD与 BDD对比 ........................... 209
- 使用 Sinon.JS编写测试监视和测试桩 ................................. 209
- 测试监视 ............................. 213
- 测试桩 ................................. 215
- 使用 Nightwatch.js创建端对端测试 ..................................... 216
- 生成测试覆盖率报告 ................. 217
- 小结 . 220
- 8 装饰器 .............................221
- 条件准备 ..................................... 221
- 注解和装饰器 ............................. 222
- 类装饰器 ...........