如何通过ESLint强制类方法间及属性与方法间添加空行?
如何用ESLint强制类属性与方法、方法与方法间的空行?
我需要用ESLint实现以下规则:
- 类的属性与方法之间必须添加空行
- 类的方法与方法之间必须添加空行
- 类的属性之间不需要强制添加空行
错误示例(需触发ESLint错误):
class MyClass { myProp1: string; myProp2: string; method1 () { } method2 () { } }
正确示例(不应触发错误):
class MyClass { myProp1: string; myProp2: string; method1 () { } method2 () { } }
我当前的ESLint配置对函数有效,但对类方法不起作用:
'lines-between-class-members': 'off', '@typescript-eslint/lines-between-class-members': ['error', { blankLine: 'always', prev: ['*'], next: ['function', 'block']} ],
请问该如何调整配置?
解决方案
问题出在你配置里使用的成员类型不符合@typescript-eslint/lines-between-class-members规则的定义,该规则的成员类型是field(属性)、method(方法)这类特定值,而非function或block。
你可以替换成以下配置:
'lines-between-class-members': 'off', '@typescript-eslint/lines-between-class-members': [ 'error', // 属性与方法之间必须有空行 { blankLine: 'always', prev: 'field', next: 'method' }, // 方法与方法之间必须有空行 { blankLine: 'always', prev: 'method', next: 'method' }, // 属性之间允许无空行 { blankLine: 'any', prev: 'field', next: 'field' } ]
这个配置会:
- 强制要求属性之后跟方法时必须有空行
- 强制要求方法之后跟方法时必须有空行
- 不对属性之间的空行做强制要求(可加可不加)
完全匹配你需要的规则效果。
内容的提问来源于stack exchange,提问作者Andre M
相关产品推荐
相关产品推荐

