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 禁用注释 针对这些特定情况,而不是完全禁用此规则。