You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否设置规则:类中带前置下划线的函数/变量必须标记为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:27:34