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

Book description

TypeScript是JavaScript的类型化超集,有可能解决JavaScript的许多著名的让人头疼的问题。但是TypeScript也有自己的学习曲线,同时了解如何有效地使用它也需要时间和实践。本书采用了《Effective C++》和《Effective Java》(均由Addison-Wesley出版社出版)所流行的格式,这本实用的书提供了62个实践方法,给出了包括什么该做,什么不该做,以及如何思考这门语言的具体建议。

本书作者Dan Vanderkam是Sidewalk Labs的首席软件工程师,他通过具体的例子向你展示了如何应用每个条款的建议。本书将帮助你从一个熟悉TypeScript基础知识的初级或中级用户晋升为一个知道如何使用好这门语言的专家。

  • 学习TypeScript的类型系统的基本内容。
  • 设计类型,让你的代码更安全,更易懂。
  • 使用类型推断,用最少的类型标注来获得完全的安全。
  • 战术性利用any类型。
  • 了解TypeScript中的依赖关系和类型声明文件是如何工作的。
  • 将你的JavaScript代码库成功地迁移到 TypeScript。

Table of contents

  1. 封面
  2. 封底
  3. 对本书的赞誉
  4. 扉页
  5. 版权页
  6. oreilly公司介绍
  7. 致谢
  8. 目录 (1/2)
  9. 目录 (2/2)
  10. 前言
    1. 本书面向的读者群
    2. 我为什么写本书
    3. 本书结构
    4. TypeScript 示例代码约定
    5. 排版约定
    6. 使用示例代码
    7. O’Reilly在线学习平台(O’Reilly Online Learning)
    8. 意见和疑问
    9. 致谢
  11. 第1章 了解TypeScript
    1. 条款1:理解 TypeScript 与 JavaScript 的关系
      1. 要记住的事情
    2. 条款2:知道你在使用哪个 TypeScript 选项
      1. 要记住的事情
    3. 条款3:理解代码的生成是独立于类型的
      1. 类型错误的代码仍会产生输出
      2. 你无法在运行时检查 TypeScript 类型
      3. 类型操作不能影响运行时的值
      4. 运行时类型可能与声明类型不一样
      5. 你不能基于 TypeScript 类型来重载一个函数
      6. TypeScript 类型对运行时的性能没有影响
      7. 要记住的事情
    4. 条款4:习惯结构类型(Structural Typing)
      1. 要记住的事情
    5. 条款5:限制使用any类型
      1. any类型没有类型安全
      2. any类型会让你打破契约
      3. any类型没有语言服务
      4. any类型会掩盖重构代码时的错误
      5. any类型遮蔽了你的类型设计
      6. any类型破坏了你对类型系统的信心
      7. 要记住的事情
  12. 第2章 TypeScript 的类型系统
    1. 条款6:使用你的编辑器来询问和探索类型系统
      1. 要记住的事情
    2. 条款7:将类型视为价值的集合
      1. 要记住的事情
    3. 条款8:知道如何分辨符号是类型空间还是值空间 (1/2)
    4. 条款8:知道如何分辨符号是类型空间还是值空间 (2/2)
      1. 要记住的事情
    5. 条款9:优先选择类型声明而不是类型断言
      1. 要记住的事情
    6. 条款10:避免对象包装类(String,Number,Boolean,Symbol,BigInt)
      1. 要记住的事情
    7. 条款11:认识额外属性检查的局限性
      1. 要记住的事情
    8. 条款12:尽可能将类型应用于整个函数表达式
      1. 要记住的事情
    9. 条款13:了解类型(type)和接口(interface)的区别
      1. 要记住的事情
    10. 条款14:使用类型操作和泛型来避免重复自己的工作
      1. 要记住的事情
    11. 条款15:为动态数据使用索引签名
      1. 要记住的事情
    12. 条款16:优先选择 Array、Tuple 和 ArrayLike,而不是数字索引签名
      1. 要记住的事情
    13. 条款17:使用 readonly 避免值变(Mutation)相关的错误
      1. 要记住的事情
    14. 条款18:使用映射类型来保持值的同步
      1. 要记住的事情
  13. 第3章 类型推断
    1. 条款19:避免你的代码被可推断类型弄得混乱不堪 (1/2)
    2. 条款19:避免你的代码被可推断类型弄得混乱不堪 (2/2)
      1. 要记住的事情
    3. 条款20:不同的类型使用不同的变量
      1. 要记住的事情
    4. 条款21:理解类型扩展
      1. 要记住的事情
    5. 条款22:理解类型收缩
      1. 要记住的事情
    6. 条款23:一次性构建对象
      1. 要记住的事情
    7. 条款24:在使用别名时要保持一致
      1. 要记住的事情
    8. 条款25:使用async函数代替异步代码的回调
      1. 要记住的事情
    9. 条款26:了解类型推断中如何使用上下文
      1. 元组类型
      2. 对象
      3. 回调
      4. 要记住的事情
    10. 条款27:使用函数式构造和库来帮助类型流转
      1. 要记住的事情
  14. 第4章 类型设计
    1. 条款28:倾向选择总是代表有效状态的类型
      1. 要记住的事情
    2. 条款29:宽进严出
      1. 要记住的事情
    3. 条款30:不要在文档中重复类型信息
      1. 要记住的事情
    4. 条款31:将空值推到你的类型边界上
      1. 要记住的事情
    5. 条款32:优选接口的联合,而不是联合的接口
      1. 要记住的事情
    6. 条款33:选择更精确的字符串类型的替代类型
      1. 要记住的事情
    7. 条款34:宁愿选择不完整的类型,也不选择不准确的类型
      1. 要记住的事情
    8. 条款35:从 API 和规范而不是从数据中生成类型 (1/2)
    9. 条款35:从 API 和规范而不是从数据中生成类型 (2/2)
      1. 要记住的事情
    10. 条款36:使用你的问题域语言命名类型
      1. 要记住的事情
    11. 条款37:考虑加“烙印”来实现名义类型
      1. 要记住的事情
  15. 第5章 和 Any 一起工作
    1. 条款38:为 Any 类型使用最窄的范围
      1. 要记住的事情
    2. 条款39:比起普通的 any,选择更精确的 any 变体
      1. 要记住的事情
    3. 条款40:在类型良好的函数中隐藏不安全的类型断言
      1. 要记住的事情
    4. 条款41:理解 any 演变
      1. 要记住的事情
    5. 条款42:对未知类型的值使用 unknown 而不是 any
      1. 要记住的事情
    6. 条款43:选择类型安全的方法而不是猴子补丁
      1. 要记住的事情
    7. 条款44:追踪你的类型覆盖率以防止类型安全中的回归问题
      1. 要记住的事情
  16. 第6章 类型声明和 @types
    1. 条款45:把 TypeScript 和 @types 放在 devDependencies 中
      1. 要记住的事情
    2. 条款46:了解类型声明中涉及的三个版本
      1. 要记住的事情
    3. 条款47:导出所有出现在公有 API 中的类型
      1. 要记住的事情
    4. 条款48:使用 TSDoc 来编写 API 注释
      1. 要记住的事情
    5. 条款49:提供回调中 this 的类型
      1. 要记住的事情
    6. 条款50:优先选择条件类型,而不是重载声明
      1. 要记住的事情
    7. 条款51:反映类型以切断依赖
      1. 要记住的事情
    8. 条款52:警惕测试类型时的陷阱
      1. 要记住的事情
  17. 第7章 编写和运行你的代码
    1. 条款53:使用 ECMAScript 特性,而非 TypeScript 特性
      1. 枚举
      2. 参数属性
      3. 命名空间和三斜线导入
      4. 装饰器
      5. 要记住的事情
    2. 条款54:了解如何迭代对象
      1. 要记住的事情
    3. 条款55:了解 DOM 的层次结构
      1. 要记住的事情
    4. 条款56:不要依赖私有访问修饰符(private)来隐藏信息
      1. 要记住的事情
    5. 条款57:使用 Source Maps 来调试 TypeScript
      1. 要记住的事情
  18. 第8章 迁移到TypeScript
    1. 条款58:编写现代 JavaScript
      1. 使用 ECMAScript 模块
      2. 使用类而不是原型
      3. 使用 let/const 代替 var
      4. 使用 for-of 或数组方法代替 for(;;)
      5. 优先选择箭头函数而不是函数表达式
      6. 使用对象字面量的简写形式和解构赋值
      7. 使用默认函数参数
      8. 使用 async/await 代替原始的 Promise 或 Callback
      9. 不要把 use strict 放在 TypeScript 中
      10. 要记住的事情
    2. 条款59:使用 @ts-check 和 JSDoc 来尝试 TypeScript
      1. 未声明的全局变量
      2. 未知的库
      3. DOM 问题
      4. 不准确的 JSDoc
      5. 要记住的事情
    3. 条款60:通过 allowJs 混合使用 TypeScript、JavaScript
      1. 要记住的事情
    4. 条款61:将模块逐个转换到依赖关系图上
      1. 未声明的类成员
      2. 类型不断变化的值
      3. 要记住的事情
    5. 条款62:在启用 noImplicitAny 之前,不要认为迁移已经完成
      1. 要记住的事情
  19. 作者介绍
  20. 封面介绍

Product information

  • Title: Effective TypeScript: 精进TypeScript代码的62个实践方法
  • Author(s): Dan Vanderkam
  • Release date: November 2021
  • Publisher(s): China Electric Power Press Ltd.
  • ISBN: 9787519859381