跳至主要内容

禁止空函数

禁止空函数。

🎨

"plugin:@typescript-eslint/stylistic" 中扩展 ESLint 配置 将启用此规则。

此规则扩展了基本 eslint/no-empty-function 规则。它添加了对处理 TypeScript 特定代码的支持,否则这些代码将触发该规则。

一个有效的 TypeScript 特定代码示例,否则将触发 no-empty-function 规则,是在构造函数中使用 参数属性

如何使用

.eslintrc.cjs
module.exports = {
"rules": {
// Note: you must disable the base rule as it can report incorrect errors
"no-empty-function": "off",
"@typescript-eslint/no-empty-function": "error"
}
};

在游乐场中尝试此规则 ↗

选项

参见 eslint/no-empty-function 选项

此规则添加了以下选项

type AdditionalAllowOptionEntries =
| 'private-constructors'
| 'protected-constructors'
| 'decoratedFunctions'
| 'overrideMethods';

type AllowOptionEntries =
| BaseNoEmptyFunctionAllowOptionEntries
| AdditionalAllowOptionEntries;

interface Options extends BaseNoEmptyFunctionOptions {
allow?: Array<AllowOptionEntries>;
}
const defaultOptions: Options = {
...baseNoEmptyFunctionDefaultOptions,
allow: [],
};

allow: private-constructors

{ "allow": ["private-constructors"] } 选项的正确代码示例

class Foo {
private constructor() {}
}
在游乐场中打开

allow: protected-constructors

{ "allow": ["protected-constructors"] } 选项的正确代码示例

class Foo {
protected constructor() {}
}
在游乐场中打开

allow: decoratedFunctions

{ "allow": ["decoratedFunctions"] } 选项的正确代码示例

class Foo {
@decorator()
foo() {}
}
在游乐场中打开

allow: overrideMethods

{ "allow": ["overrideMethods"] } 选项的正确代码示例

abstract class Base {
protected greet(): void {
console.log('Hello!');
}
}

class Foo extends Base {
protected override greet(): void {}
}
在游乐场中打开

何时不使用它

如果您正在使用需要函数的外部 API,即使这些函数什么也不做,您可能希望避免使用此规则。您可以考虑使用 ESLint 禁用注释 来处理这些特定情况,而不是完全禁用此规则。

测试代码也经常违反此规则。如果您的测试设置不支持“模拟”或“间谍”函数,例如 jest.fn()sinon.spy()vi.fn(),您可能希望在测试文件中禁用此规则。同样,如果这些情况并不十分常见,您可能希望考虑使用 ESLint 禁用注释 来处理这些特定情况,而不是完全在测试文件中禁用此规则。

资源

来自 ESLint 核心 的 ❤️。