Better

Ethan的博客,欢迎访问交流

TypeScript 研发体系建设

项目中使用 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,不要有心里负担
  • 类型代码在编译后会消失,如果仅仅调整代码类型,对代码运行逻辑不会有任何变更


留言