为啥 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”