首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么eslint在命名-约定规则中将类视为变量?

为什么eslint在命名-约定规则中将类视为变量?
EN

Stack Overflow用户
提问于 2022-06-15 10:11:31
回答 2查看 535关注 0票数 2

我使用@typescript-eslint/naming-convention来强制使用变量名。

我设置了一个规则,默认情况下允许每个变量都是camelCase语法,但类和对象除外。

但是,当我使用带有导入函数的析构赋值时,我得到了将BarClass作为变量并应用camelCase规则而不是类规则的eslint错误:

变量名称BarClass必须匹配下列格式之一: camelCase 12:11-12:19

有办法解决这个问题吗?我怎么知道那是一个类而不是变量呢?

打字稿-Elint.io游乐场

代码语言:javascript
复制
class BarClass {

}

const geClass = async() => {
  return { BarClass };  
}

const bla = true;

(async () => {
  const { BarClass } = await geClass();

})();

eslint配置:

代码语言:javascript
复制
{
  "rules": {
    "@typescript-eslint/naming-convention": [
      "error",
      {
        "selector": [
          "default"
        ],
        "format": [
          "camelCase"
        ]
      },
      {
        "selector": [
          "class", "objectLiteralProperty"
        ],
        "format": null
      }
    ]
  }
}
EN

回答 2

Stack Overflow用户

发布于 2022-06-15 10:17:00

好的,类是一个TypeScript接口,覆盖一个JavaScript变量。看这里

根据的说法,这条规则没有选择去做你想做的事情

票数 0
EN

Stack Overflow用户

发布于 2022-06-15 14:54:08

代码语言:javascript
复制
const { BarClass } = await geClass();

是同一件事

代码语言:javascript
复制
const BarClass = (await geClass()).BarClass;

(这样看比较容易)。在这个语句中,标识符BarClass出现了两次:BarClass的第一次出现是变量名,第二次是属性名。ESLint抱怨你的变量不在骆驼的情况下,这是真的。您可以通过重命名变量以匹配规则约定来解决这个问题,但这最终会使您的代码变得不那么清晰:

代码语言:javascript
复制
const { BarClass: barClass } = await geClass();

或等量

代码语言:javascript
复制
const barClass = (await geClass()).BarClass;

恐怕您所使用的规则无法为具有类类型的变量设置异常,这将是首选的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72629547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档