- @typescript-eslint/adjacent-overload-signatures
- 建议函数重载的签名保持连续
- @typescript-eslint/await-thenable
- 不允许对不是“Thenable”对象的值使用await关键字,相反对“Thenable”对象必须使用await,例如对Promise对象。
- @typescript-eslint/array-type
- 定义数组时,使用统一的样式,如都使用T[]或都使用Array
。
"@typescript-eslint/array-type": [
"error",
{
// array | array-simple | generic
"default": "array"
}
]
- default的值设置为array时,统一使用T[];设置generic时,统一使用Array
,设置为array-simple时,简单类型使用T[],其它类型使用Array
- @typescript-eslint/ban-ts-comment
- 不允许使用
@ts-<directional>
格式的注释,或要求在注释后进行补充说明
- @typescript-eslint/ban-tslint-comment
- 不允许使用
//tslint:<rule-flag>
格式的注释
- @typescript-eslint/ban-types
- 不允许使用某些类型,例如类型小写保持一致,使用string,boolean,number等等,而不是String,Boolean,Number。
- @typescript-eslint/brace-style
- 要求代码块的左大括号与其对应的语句或声明位于同一行。
- @typescript-eslint/class-literal-property-style
- 建议类中的字面量属性对外暴露时,保持一致的风格
- @typescript-eslint/comma-dangle
- 允许或禁止使用尾随逗号,类的最后一个属性或者数组最后一个元素禁止尾随逗号
"@typescript-eslint/comma-dangle": [
"error",
{
// never | always
"arrays": "never",
"objects": "never",
"imports": "never",
"exports": "never",
"functions": "never"
}
]
- 共有数组arrays,对象objects,导入imports,导出exports和函数functions五各类型支持配置,值设置为never则是禁止尾随逗号,设置为always则是允许尾随逗号。
- @typescript-eslint/comma-spacing
- 强制逗号前后的空格风格保持一致,例如强制要求逗号前不加空格,逗号后必须添加空格
"@typescript-eslint/comma-spacing": [
"error",
{
"before": false,
"after": true
}
]
- @typescript-eslint/consistent-type-assertions
- 强制使用一致的类型断言
- @typescript-eslint/default-param-last
- 强制默认参数位于参数列表的最后一个
- @typescript-eslint/explicit-member-accessibility
- 在类属性和方法上需要显式定义访问修饰符
- @typescript-eslint/func-call-spacing
- 禁止或者要求函数名与函数名后面的括号之间加空格
"@typescript-eslint/func-call-spacing": [
"error",
"never"
]
- 设置为never时,函数名后面禁止添加空格,设置为always时,函数名后面允许添加空格
- @typescript-eslint/init-declarations
- 禁止或者要求在变量声明中进行初始化
"@typescript-eslint/init-declarations": [
"error",
"always"
]
- 设置为always时,声明变量必须初始化,设置为never时,声明变量可以不初始化。
- @typescript-eslint/keyword-spacing
- 强制在关键字之前和关键字之后保持一致的空格风格,例如在关键字前后都添加空格
"@typescript-eslint/keyword-spacing": [
"error",
{
"before": true,
"after": true
}
]
- @typescript-eslint/lines-between-class-members
- 禁止或者要求类成员之间有空行分隔,always为允许有空行,never为不允许有空行,如下设置空行后不加空行,属性和方法之前添加空行。
"@typescript-eslint/lines-between-class-members": [
"error",
{
enforce: [
{
blankLine: "never",
prev: "field",
next: "method"
}
]
}
]
- @typescript-eslint/member-delimiter-style
- 要求接口和类型别名中的成员之间使用特定的分隔符,支持定义的分隔符有三种:分号、逗号、无分隔符
- @typescript-eslint/member-ordering
- 要求类、接口和类型字面量中成员的排序方式保持一致的风格
- @typescript-eslint/naming-convention
- 强制标识符使用一致的命名风格。例如类名使用大驼峰,函数使用小驼峰。
- @typescript-eslint/no-array-constructor
- 不允许使用“Array”构造函数。
- @typescript-eslint/no-base-to-string
- 要求当一个对象在字符串化时提供了有用的信息,才能调用“toString()”方法
- @typescript-eslint/no-confusing-non-null-assertion
- 不允许在可能产生混淆的位置使用非空断言
- @typescript-eslint/no-confusing-void-expression
- 要求void类型的表达式出现在合适的位置
- @typescript-eslint/no-dupe-class-members
- 不允许重复的类成员,即已经声明的成员属性,不允许重复再声明一次。
- @typescript-eslint/no-duplicate-imports
- 禁止重复的模块导入,即已经导入的模块,不允许再再次导入。
- @typescript-eslint/no-empty-function
- 不允许使用空函数,支持的白名单配置包括函数,箭头函数,方法,构造方法等等,配置如下
"@typescript-eslint/no-empty-function": [
"error",
{
"allow": [
"functions",
"arrowFunctions",
"generatorFunctions",
"methods",
"generatorMethods",
"getters",
"setters",
"constructors",
"asyncFunctions",
"asyncMethods"
]
}
]
- @typescript-eslint/no-empty-interface
- 不允许声明空接口
- @typescript-eslint/no-extraneous-class
- 不允许将类用作命名空间
- @typescript-eslint/no-extra-non-null-assertion
- 不允许多余的非空断言
- @typescript-eslint/no-extra-parens
- 禁止使用不必要的括号
- @typescript-eslint/no-extra-semi
- 禁止使用不必要的分号
- @typescript-eslint/no-floating-promises
- 要求正确处理Promise表达式,例如Promise一定要处理异常情况
- @typescript-eslint/no-implied-eval
- 禁止使用类似“eval()”的方法
- @typescript-eslint/no-inferrable-types
- 不允许对初始化为数字、字符串或布尔值的变量或参数进行显式类型声明
- @typescript-eslint/no-invalid-this
- 禁止在this的值为undefined的上下文中使用this
- @typescript-eslint/no-invalid-void-type
- 禁止在返回类型或者泛型类型之外使用void
- @typescript-eslint/no-loss-of-precision
- 禁止使用失去精度的字面数字
- @typescript-eslint/no-magic-numbers
- 禁止使用魔法数字。但有些情况下我们又需要直接使用数字,例如定义枚举时,在数组中根据索引取数据时,或者直接定义某些值不是魔法数字,示例如下
"@typescript-eslint/no-magic-numbers": [
"off",
{
"ignoreEnums": true,
"ignoreArrayIndexes": true,
"ignoreNumericLiteralTypes": true,
"ignore": [
-1,
0,
1
]
}
]
- @typescript-eslint/no-misused-new
- 要求正确地定义“new”和“constructor”
- @typescript-eslint/no-misused-promises
- 禁止在不正确的位置使用Promise
- @typescript-eslint/no-non-null-asserted-optional-chain
- 禁止在可选链表达式之后使用非空断言
- @typescript-eslint/no-non-null-assertion
- 禁止以感叹号作为后缀的方式使用非空断言
- @typescript-eslint/no-redeclare
- 禁止变量重复声明,即前面声明过的变量,不允许再次声明。
- @typescript-eslint/no-require-imports
- 禁止使用“require()”语法导入依赖
- @typescript-eslint/no-restricted-syntax
- 不允许使用指定的(即用户在规则中定义的)语法。例如不允许直接使用console.log打印日志,而是使用我们封装好的LogUtil打印日志
"@typescript-eslint/no-restricted-syntax": [
"error",
{
"selector": "CallExpression[callee.name='console.log']",
"message": "不要直接使用console打印日志,请使用LogUtil"
}
]
- @typescript-eslint/no-shadow
- 禁止声明与外部作用域变量同名的变量
- @typescript-eslint/no-throw-literal
- 禁止将字面量作为异常抛出
- @typescript-eslint/no-unnecessary-boolean-literal-compare"
- 禁止将布尔值和布尔字面量直接进行比较
- @typescript-eslint/no-unnecessary-condition
- 不允许使用类型始终为真或始终为假的表达式作为判断条件
- @typescript-eslint/no-unnecessary-qualifier
- 禁止不必要的命名空间限定符