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