项目中使用 TypeScript 是否存在某些痛点呢?比如 anyScript?高昂的类型定义与维护成本,如何避免 TypeScript 问题,发挥 TypeScript 的优势呢,看看别人是怎么做的吧!
工程篇
- 提交时类型检查:git commit 时触发类型检查
- 整个项目的类型检查是非常耗时间的,TypeScript 3.4 中增加了 incremental 缓存功能
- 在 tsconfig.json 中开启 skipLibCheck 检查,跳过第三方包类型报错
- eslint rule
- 不要奇怪为什么是 eslint,因为 tslint 已经整合到 eslint 中
- pri 不仅能在脚手架中生成这些配置沉淀,还能让项目在维护中,实时禁止这些配置的修改
工具篇:pont
- TypeScript 最大槽点:类型定义成本高,如果前端可以与后端,共享接口定义,返回数据类型的定义,那么类型定义成本将大大降低
- pont 通过 swagger 等接口文档工具,获取后端的接口、实体类的数据结构,然后转换为类型完美的前端接口层代码和业务要模型实体类代码
- 接口变更通知
框架篇:在 redux 中,要达到完美匹配是非常困难的,好在 TypeScript 有强大的类型推导能力,强大到 TypeScript 本身也是可以编程的,制定了 iron-redux
规范
规范篇:FF 与 OOP
- 纯函数的概念,让模块更可靠、架构逻辑更清晰,极大的降低了项目的复杂度
- OOP 的方法是天然的 mutable
OOP 的优势
- 业务模型复杂时,OOP 把数据结构和处理数据结构的方法组织在一起,比起 FP 的散乱陈列的方法更为清晰
- OOP 有丰富的、成熟的、好用的设计模式
- OOP 相比 FP,更容易发挥 TypeScript 的优势
思想篇
- 如果一个数据、方法、模块,类型定义成本高却不被调用,那么类型定义就是毫无意义的,这时候果断加上 any,不要有心里负担
- 类型代码在编译后会消失,如果仅仅调整代码类型,对代码运行逻辑不会有任何变更