求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

EffectiveTypeScript·精进TypeScript代码的62个实践方法查看源代码讨论查看历史

跳转至: 导航搜索

来自 孔夫子网 的图片

EffectiveTypeScript·精进TypeScript代码的62个实践方法》,[美] 丹·范德卡姆 著,[美] 丹·范德卡姆 编,出版社: 中国电力出版社。

读书,可以与时俱进,开阔自己,提高自己,充实自己,完善自己,是全球文化[1]科技知识扩容和更新的需要,是知识[2]经济和社会发展的要求。

目录

前言 .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

要记住的事情

条款10:避免对象包装类(String,Number,Boolean,Symbol,BigInt)

要记住的事情 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

参考文献

  1. 文化的作用是什么,光明网,2015-10-14
  2. 什么是知识?,搜狐,2016-08-13