为啥 typescript-eslint 对 enumMember 强制执行 camelCase?

Posted

技术标签:

【中文标题】为啥 typescript-eslint 对 enumMember 强制执行 camelCase?【英文标题】:Why does typescript-eslint enforce camelCase for enumMember?为什么 typescript-eslint 对 enumMember 强制执行 camelCase? 【发布时间】:2021-10-05 13:36:32 【问题描述】:

TypeScript 文档write enum members 中的所有枚举示例都使用 PascalCase,例如:

enum Direction 
  Up = 1,
  Down,
  Left,
  Right,

但是@typescript-eslint/naming-convention 强制执行camelCase(并拒绝PascalCase),这意味着我必须写:

enum Direction 
  up = 1,
  down,
  left,
  right,

是否有理由禁止枚举成员使用 PascalCase?


上下文是一个全新的 Angular 12 项目,带有 recommended 原理图:

ng add @angular-eslint/schematics

这对我来说毫无意义。

我的设置可能有误吗?

为什么官方的命名约定会被拒绝?

【问题讨论】:

没有对错,eslint做自己觉得好看或者实用的事情。 typescript-eslint 会违反 TS 文档,我不会是第一个感到惊讶的人。我想知道我是否在某个地方犯了错误。我相信大多数开发者都遵循官方文档的风格...... 出于同样的原因,我也对这条规则感到惊讶! 仅供参考,我只是覆盖了 .eslintrc.json 中的规则:“@typescript-eslint/naming-convention”:[“error”,“selector”:“enumMember”,“format”: ["PascalCase"] ] @franswa 这有帮助,但会取消对 pascalCase 的所有其他检查 - 奇怪的是 eslint 规则与文档相矛盾.. 太烦人了 :( 【参考方案1】:

将此规则添加到“eslintrc”配置文件中的规则部分:

"rules": 
    ...,
    "@typescript-eslint/naming-convention": [
      "error",
      
        "selector": "variable",
        "format": ["camelCase", "UPPER_CASE", "PascalCase"]
      
    ]
  

尝试根据需要更改“选择器”和“格式”选项: naming-convention available options

【讨论】:

这个答案基本上不是说,“这是为 ESLint 编写规则的方法;自己弄清楚”? @HereticMonkey“给一个人一条鱼,喂他一天。教一个人鱼喂他一辈子”在我看来这是正确的答案,它甚至链接到文档

以上是关于为啥 typescript-eslint 对 enumMember 强制执行 camelCase?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 eslint 考虑 JSX 或一些反应 @types undefined,因为将 typescript-eslint/parser 升级到版本 4.0.0

无法加载插件@typescript-eslint:找不到模块'eslint-plugin-@typescript-eslint'

typescript-eslint 未使用 tsconfig

使用 Prettier Eslint 时找不到模块“@typescript-eslint/parser”

ESLint 无法识别“@typescript-eslint/eslint-plugin”

如何禁用@typescript-eslint/no-non-null-assertion 规则