react规则基于eslint-plugin-react、eslint-plugin-react-hooks、typescript-eslint插件定义!
rules规则可参考相应插件文档配置
JS规范
强制组件中key参数,不能用索引(警告)禁止重复导入禁止模块导入自己禁止重新设置 函数形参禁止没有子组件的额外结束标签允许解析props参数给 react组件使用允许不初始化state参数,即可使用允许在使用props、state、context时,不去解析赋值参数不强制组件必须定义defaultProps参数不强制空组件定义方式,<></>不强制返回的组件,必须有括号包裹不禁用createClass.propTypes验证规则不强制组件方法顺序,如生命周期,按指定方式写,如果生命周期有引用其它方法,必须在生命周期上面声明不强制函数返回<div></div>等组件时,必须引入react不强制每一行都是独立的jsx元素不强制generator 函数中 * 号周围有空格不强制在函数括号内使用一致的换行不强制导入模块时,必须解构出来的参数不强制node_modules模块必须在 本地模块之前导入不强制default默认导出允许循环依赖关系只有一个导出时,不强制设置成默认导出不禁止默认导出不禁止使用无关的包验证导入名称,是否是模块中导出的名称不验证默认导出名称,必须和引入模块名称一致不限制 确保在导入路径中使用一致文件扩展名不限制 import 和 require 语句中出现不必要的路径段不限制 声明的元素必须有交互式的作用不限制 带有单击处理可见的非交互式元素必须至少具有一个键盘侦听器不限制 静态HTML元素标签语义化,必须带有role不限制a标签的href必须带参数不限制import 排序不强制使用类方法上this不强制使用一致的换行符风格不禁止直接使用 Object.prototypes 的内置属性不限制 如果模块中只有一个导出,则最好使用默认导出而不是命名导出不限制箭头函数主体是否必须花括号不限制箭头函数参数中需要括号不限制 大括号内强制执行一致的换行符不限制 隐式箭头必须换行符不禁止eslint-disable不带规则名称的注释不禁止括号前有空格
TS规范
必须使用T[]声明数组类型强制使用记录类型Record强制使用一致的类型导入限制访问对象必须使用.点号禁止使用空断言! ===语法限制成员重复命名禁止重复导入禁止声明空接口禁止使用for in循环数组禁止 this 关键字在类或类对象之外出现禁止循环中声明函数强制执行new和constructor时,有效的定义类型禁止使用自定义的TS模块和命名空间,应加前缀declare禁止在可选链表达式后使用非空断言禁止在类构造函数中使用参数属性禁止变量重新声明禁止在外部作用域中声明 相同变量名称禁止将变量分配给this限制异常抛出内容语法,而非空内容等禁止未使用的表达式禁止未使用过的变量禁止提前使用变量、属性、方法禁止不必要的构造函数需要在类型注释周围保持一致的间距需要存在类型注释使用联合类型对switch进行枚举检查禁止通过使用重载方法,重置函数的传入参数类型禁止使用特定类型,如内置的别名不禁止未声明的变量不限制 重载成员必须是连续的不允许无意义的await不禁止使用带规则名称的注释不禁止tslint注释不限制必须大括号风格不限制 类上面方法名调用风格一致不允许对象尾部逗号不强制逗号后空格不强制使用类型断言不限制 type和interface声明命名不强制将默认参数放在最前面不限制 需要函数和类方法显式返回类型不限制调用方法括号的间隔,允许空格不强制一致缩进不限制关键字(try, if)前台使用一致间距不禁止类成员之间必须空行接口和类型换行样式 不限制统一,可设置; ,或空不限制换行样式不限制声明字段和使用必须顺序一致不限制Array声明构造函数不限制toString使用场景不要求 void 类型的表达式出现在语句位置不限制删除运算符不限制空函数不限制额外的非空断言不限制不必要的括号不限制不必要的分号不禁止使用类作为命名空间不强制promise去做catch错误处理不限制catch中error是any类型不限制eval()语法允许对参数、变量和属性进行显式类型声明不限制使用void泛型或返回类型之外的类型不限制丢失精度的数字不限制使用魔术数字不限制promise使用它、判断它的地方使用允许调用require()语法不禁止在外部作用域中声明 相同变量名称不限制使用类型别名不限制布尔值与其它参数相等比较不限制变量、类型始终为真/假条件不限制命名空间调用自身类型不禁止泛型参数的默认参数,与声明时类型一致不限制变量声明时,必声明类型不禁止对泛型类型 不必要的约束允许将any分配给其它变量和属性允许调用任何类型变量为any的值不禁止any类型访问任何类型的变量允许从函数中返回any类型不检测as显式类型转换不限制优先使用as const语法不限制enum显式初始化每个成员值不限制使用for of语法不限制只使用函数类型声明,接口类型声明也可以不强制includes方法优于indexOf方法不限制所有枚举成员都是文字值不强制使用namespace关键字,而不是module关键字不强制使用空合并运算符不强制使用可选链表达式,链式逻辑与也可以不要求将私有成员标记为readonly在构造函数不要求将函数中的参数标记为只读的不限制优先使用类型参数Array#reduce而不是强制转换不强制正则以一致的方式使用,应用于字符串不强制使用字符串方法时,使用startsWith和endsWith替换其它用法关闭@ts-ignore语法不强制 需要返回promise的函数方法被标记为async不限制Array.sort调用始终提供compare参方法不禁止使用不带 await 表达式的 async 函数不限制添加2个变量时,操作数必须都是数字或字符串类型不强制字符串模板里面内容,必须是字符串类型不禁止不必要的return await不要求使用分号在结尾处不要求禁止在函数括号前有空格不要求中缀操作符周围有空格不限制布尔表达式中允许的类型不让使用设置三斜杠指令与 ES6 样式导入声明的优先级不强制使用超预期范围的方法,如在类某方法中调用this(全局)不强制使用骆驼拼写法不禁止使用 require 语句不限制在类属性和方法上使用显式可访问性修饰符不限制interface声明的类型,必须以I为前缀不禁止使用!后缀运算符进行非空断言不禁止使用any类型不强制要求导出函数和类中方法,必须显式声明返回类型不对整体项目 强制性命名约定统一风格
