能否设置规则:类中带前置下划线的函数/变量必须标记为private?
实现类中带下划线前缀的成员必须标记为private的ESLint规则
可以通过@typescript-eslint/naming-convention规则实现这个反向约束,具体配置如下:
在你的ESLint配置文件(如.eslintrc.js)中,添加或修改rules部分:
module.exports = { // 其他配置项... rules: { '@typescript-eslint/naming-convention': [ 'error', // 约束类属性 { selector: 'classProperty', format: null, filter: { regex: '^_', match: true }, modifiers: ['private'] }, // 约束类方法 { selector: 'classMethod', format: null, filter: { regex: '^_', match: true }, modifiers: ['private'] } ] } };
配置说明
selector:指定检查目标,classProperty对应类属性,classMethod对应类方法format: null:关闭对命名格式的强制要求,仅关注下划线前缀与修饰符的关联filter.regex: '^_':匹配所有以下划线开头的类成员modifiers: ['private']:要求匹配到的成员必须带有private修饰符
示例验证
触发ESLint错误的代码:
class Demo { _myVar: string = ''; // 错误:带下划线前缀的属性必须标记为private _myFunc() {} // 错误:带下划线前缀的方法必须标记为private }
符合规则的代码:
class Demo { private _myVar: string = ''; // 通过 private _myFunc() {} // 通过 }
这个配置正好补全了你提到的反向规则——解决了官方文档仅要求私有成员带下划线,但未强制下划线成员必须私有的空白。
内容的提问来源于stack exchange,提问作者abyrne85
相关产品推荐
相关产品推荐

