×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
Effective TypeScript:精进TypeScript代码的62个实践方法

Effective TypeScript:精进TypeScript代码的62个实践方法

1星价 ¥34.3 (3.5折)
2星价¥33.3 定价¥98.0

温馨提示:5折以下图书主要为出版社尾货,大部分为全新(有塑封/无塑封),个别图书品相8-9成新、切口有划线标记、光盘等附件不全详细品相说明>>

暂无评论
图文详情
  • ISBN:9787519859381
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:24cm
  • 页数:14,302页
  • 出版时间:2021-11-01
  • 条形码:9787519859381 ; 978-7-5198-5938-1

本书特色

Sidewalk Labs的首席软件工程师,也是TypeScript NYC Meetup的联合创始人Dan Vanderkam创作,这本实用的指南提供了62个实践方法,给出了包括什么该做,什么不该做,以及如何思考TypeScript的具体建议。 TypeScript是JavaScript的类型化超集,有可能解决JavaScript的许多著名的让人头疼的问题。但是TypeScript也有自己的学习曲线,同时了解如何有效地使用它也需要时间和实践。本书采用了《Effective C++》和《Effective Java》(均由Addison-Wesley出版社出版)所流行的格式,这本实用的书提供了62个实践方法,给出了包括什么该做,什么不该做,以及如何思考这门语言的具体建议。 本书作者Dan Vanderkam是Sidewalk Labs的首席软件工程师,他通过具体的例子向你展示了如何应用每个条款的建议。本书将帮助你从一个熟悉TypeScript基础知识的初级或中级用户晋升为一个知道如何使用好这门语言的专家。 “本书探讨了我们在使用TypeScript时*常见的问题,并提供了实用的、注重结果的建议。无论你的TypeScript经验水平如何,你都可以从这本书中学到一些东西。” ——Ryan Cavanaugh微软 TypeScript 的工程负责人“这本书充满了实用的技巧,有必要放在每个专业的TypeScript开发者的办公桌上。即使你认为你已经了解TypeScript了,你也不会后悔拥有这本书的。” ——Yakov FainJava Champion

内容简介

本书的主要内容有: 学习TypeScript的类型系统的基本内容。设计类型, 让你的代码更安全, 更易懂。使用类型推断, 用*少的类型标注来获得完全的安全。战术性利用any类型。了解TypeScript中的依赖关系和类型声明文件是如何工作的。将你的JavaScript代码库成功地迁移到TypeScript.Dan Vanderkam是Sidewalk Labs的首席软件工程师, 也是TypeScript NYC Meetup的联合创始人。作为开源项目的长期贡献者, 他此前曾在西纳山的伊坎医学院工作, 并在谷歌负责数十亿用户使用的搜索功能。

目录

目录
前言 .1
第1 章 了解TypeScript 11
条款1:理解 TypeScript 与 JavaScript 的关系 11
要记住的事情 18
条款2:知道你在使用哪个 TypeScript 选项 18
要记住的事情 22
条款3:理解代码的生成是独立于类型的 . 22
类型错误的代码仍会产生输出 23
你无法在运行时检查 TypeScript 类型 24
类型操作不能影响运行时的值 26
运行时类型可能与声明类型不一样 . 27
你不能基于 TypeScript 类型来重载一个函数 . 28
TypeScript 类型对运行时的性能没有影响 29
要记住的事情 30
条款4:习惯结构类型(Structural Typing). 30
要记住的事情 35
条款5:限制使用any 类型 35
any 类型没有类型安全 36
any 类型会让你打破契约 36
any 类型没有语言服务 37
any 类型会掩盖重构代码时的错误 38
any 类型遮蔽了你的类型设计 . 39
any 类型破坏了你对类型系统的信心 40
要记住的事情 40
第2 章 TypeScript 的类型系统 41
条款6:使用你的编辑器来询问和探索类型系统 41
要记住的事情 46
条款7:将类型视为价值的集合 . 46
要记住的事情 53
条款8:知道如何分辨符号是类型空间还是值空间 . 54
要记住的事情 60
条款9:优先选择类型声明而不是类型断言 60
要记住的事情 64
条款10:避免对象包装类(String,Number,Boolean,Symbol,BigInt) 64
要记住的事情 68
条款11:认识额外属性检查的局限性 . 68
要记住的事情 72
条款12:尽可能将类型应用于整个函数表达式 . 72
要记住的事情 75
条款13:了解类型(type)和接口(interface)的区别 75
要记住的事情 81
条款14:使用类型操作和泛型来避免重复自己的工作 81
要记住的事情 90
条款15:为动态数据使用索引签名 . 91
要记住的事情 95
条款16:优先选择 Array、Tuple 和 ArrayLike,而不是数字索引签名. 95
要记住的事情 99
条款17:使用 readonly 避免值变(Mutation)相关的错误. 99
要记住的事情 107
条款18:使用映射类型来保持值的同步 . 107
要记住的事情 110
第3 章 类型推断 111
条款19:避免你的代码被可推断类型弄得混乱不堪 112
要记住的事情 119
条款20:不同的类型使用不同的变量 119
要记住的事情 122
条款21:理解类型扩展 122
要记住的事情 126
条款22:理解类型收缩 127
要记住的事情 130
条款23:一次性构建对象 131
要记住的事情 134
条款24:在使用别名时要保持一致 134
要记住的事情 138
条款25:使用async 函数代替异步代码的回调 138
要记住的事情 144
条款26:了解类型推断中如何使用上下文 144
元组类型 . 146
对象 148
回调 148
要记住的事情 149
条款27:使用函数式构造和库来帮助类型流转 150
要记住的事情 155
第4 章 类型设计 156
条款28:倾向选择总是代表有效状态的类型 156
要记住的事情 162
条款29:宽进严出 163
要记住的事情 166
条款30:不要在文档中重复类型信息 167
要记住的事情 169
条款31:将空值推到你的类型边界上 169
要记住的事情 173
条款32:优选接口的联合,而不是联合的接口 173
要记住的事情 177
条款33:选择更精确的字符串类型的替代类型 178
要记住的事情 182
条款34:宁愿选择不完整的类型,也不选择不准确的类型 . 183
要记住的事情 187
条款35:从 API 和规范而不是从数据中生成类型 . 188
要记住的事情 194
条款36:使用你的问题域语言命名类型 . 194
要记住的事情 197
条款37:考虑加“烙印”来实现名义类型 197
要记住的事情 201
第5 章 和 Any 一起工作. 202
条款38:为 Any 类型使用*窄的范围 . 202
要记住的事情 205
条款39:比起普通的 any,选择更精确的 any 变体 . 205
要记住的事情 207
条款40:在类型良好的函数中隐藏不安全的类型断言 207
要记住的事情 210
条款41:理解 any 演变 210
要记住的事情 214
条款42:对未知类型的值使用 unknown 而不是 any 214
要记住的事情 218
条款43:选择类型安全的方法而不是猴子补丁 218
要记住的事情 221
条款44:追踪你的类型覆盖率以防止类型安全中的回归问题 221
要记住的事情 224
第6 章 类型声明和 @types 225
条款45:把 TypeScript 和 @types 放在 devDependencies 中 225
要记住的事情 227
条款46:了解类型声明中涉及的三个版本 228
要记住的事情 232
条款47:导出所有出现在公有 API 中的类型 232
要记住的事情 233
条款48:使用 TSDoc 来编写 API 注释 234
要记住的事情 237
条款49:提供回调中 this 的类型 237
要记住的事情 242
条款50:优先选择条件类型,而不是重载声明 242
要记住的事情 245
条款51:反映类型以切断依赖 . 245
要记住的事情 246
条款52:警惕测试类型时的陷阱 247
要记住的事情 252
第7 章 编写和运行你的代码 . 253
条款53:使用 ECMAScript 特性,而非 TypeScript 特性 253
枚举 254
参数属性 . 256
命名空间和三斜线导入 258
装饰器 258
要记住的事情 259
条款54:了解如何迭代对象 259
要记住的事情 262
条款55:了解 DOM 的层次结构 . 262
要记住的事情 269
条款56:不要依赖私有访问修饰符(private) 来隐藏信息 269
要记住的事情 272
条款57:使用 Source Maps 来调试 TypeScript 272
要记住的事情 276
第8 章 迁移到TypeScript . 277
条款58:编写现代 JavaScript 278
使用 ECMAScript 模块 279
使用类而不是原型 . 279
使用 let/const 代替 var . 281
使用 for-of 或数组方法代替 for(;;) 282
优先选择箭头函数而不是函数表达式 282
使用对象字面量的简写形式和解构赋值 . 283
使用默认函数参数 . 285
使用 async/await 代替原始的 Promise 或 Callback 286
不要把 use strict 放在 TypeScript 中 . 287
要记住的事情 288
条款59:使用 @ts-check 和 JSDoc 来尝试 TypeScript 288
未声明的全局变量 . 289
未知的库 . 289
DOM 问题 290
不准确的 JSDoc 291
要记住的事情 293
条款60:通过 allowJs 混合使用 TypeScript、JavaScript 293
要记住的事情 295
条款61:将模块逐个转换到依赖关系图上 295
未声明的类成员 296
类型不断变化的值 . 298
要记住的事情 300
条款62:在启用 noImplicitAny 之前,不要认为迁移已经完成 . 301
要记住的事情 302

展开全部

作者简介

Dan Vanderkam是Sidewalk Labs的首席软件工程师,也是TypeScript NYC Meetup的联合创始人。作为开源项目的长期贡献者,他此前曾在西纳山的伊坎医学院工作,并在谷歌负责数十亿用户使用的搜索功能。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航