JS 基本类型分类
原子类型:String、Number、BigInt、Boolean、Symbol、Undefined、Null
引用类型:Object
类型抽离规则:
如果该类型只适用于当前模块,就抽离到当前模块下的 types 文件中;
如果该类型是整个系统通用的,就抽离到项目的 types 文件中。
基本准则
- 如果一个类型使用的次数会大于 1(包括未来),那么这个类型就需要专门声明并抽离出来
- 每一个方法或者函数都要声明好入参和返回值(void 除外)的类型
- 如果需要 import 一个类型,而非值的时候,需要使用 import type 标识符。并且,所有 import type 的书写位置应当在 import 的下面,中间空一行
- 公共函数或者方法(包括 utils 和 api 函数等)需要使用 JSDoc 加上注释,并在注释中加上各个参数的类型。如果该参数是引用类型,需在类型中加上该参数的各个属性的注释(如果该类型是单独抽离出来的,就不需要了,因为在类型声明的地方已经有注释了)
第三方库
- 如果第三方库中没有相应的 TS 类型声明,就去找相对应的 @types/libname(一般常用的库,社区都会有相对应的类型声明库)。如果没有相应的类型库,需要在项目的 declares 文件夹中新增 libname.d.ts 文件。然后首先在其中加上 declare module 'libname' 模块声明,并在模块声明中导出用到的子模块
在 Vue 中使用
- prop、ref、reactive 和 emit 中的每一个事件都要做好相应的类型或函数声明