class-methods-use-this
强制类方法使用
this。
此规则扩展了基本 eslint/class-methods-use-this 规则。它添加了对忽略override方法或实现接口的类上的方法的支持。
使用方法
.eslintrc.cjs
module.exports = {
"rules": {
// Note: you must disable the base rule as it can report incorrect errors
"class-methods-use-this": "off",
"@typescript-eslint/class-methods-use-this": "error"
}
};
在游乐场中尝试此规则 ↗
选项
参见 eslint/class-methods-use-this 选项.
此规则添加了以下选项
interface Options extends BaseClassMethodsUseThisOptions {
ignoreOverrideMethods?: boolean;
ignoreClassesThatImplementAnInterface?: boolean | 'public-fields';
}
const defaultOptions: Options = {
...baseClassMethodsUseThisOptions,
ignoreOverrideMethods: false,
ignoreClassesThatImplementAnInterface: false,
};
ignoreOverrideMethods
使规则忽略任何明确标记为override的类成员。
当ignoreOverrideMethods设置为true时的正确代码示例
class X {
override method() {}
override property = () => {};
}
在游乐场中打开ignoreClassesThatImplementAnInterface
使规则忽略在implements类型的类中定义的类成员。如果指定,它可以是
true: 忽略所有实现接口的类'public-fields': 仅忽略实现接口的类的公共字段
重要的是要注意,此选项不仅适用于在接口中定义的成员,因为这将需要类型信息。
true
当ignoreClassesThatImplementAnInterface设置为true时的正确代码示例
class X implements Y {
method() {}
property = () => {};
}
在游乐场中打开'public-fields'
当ignoreClassesThatImplementAnInterface设置为'public-fields'时的错误代码示例
- ❌ 错误
- ✅ 正确
何时不使用它
如果您的项目以 TypeScript 难以建模的方式动态更改this范围,则此规则可能不可行。您可能考虑使用 ESLint 禁用注释 针对这些特定情况,而不是完全禁用此规则。