【问题标题】:ESLint how to apply "Use array destructuring"?ESLint 如何应用“使用数组解构”?
【发布时间】:2021-02-23 12:54:36
【问题描述】:

假设我想做这样的事情:

let foo = myArray[1];

我的项目配置了 ESLint 的 AirBnb 规则,它抛出以下错误:“使用数组解构(首选解构)”。

我设法解决了这个问题:

let [, foo] = myArray;

但是,我发现了两个问题:1. 它很难看(在我看来很难阅读)以及 2. 如果我试图访问数组的第 20 个元素,我必须使用 20 个逗号吗?

我找到的解决方案显然不可行,那么有没有更好的方法来解决这个问题?

【问题讨论】:

  • slice() 可能有助于获取第 20 个索引
  • 这就是如何应用数组解构。如果您不喜欢它,请禁用或配置一般规则(请参阅eslint.org/docs/rules/prefer-destructuring)或专门针对该行。
  • 如果你不喜欢airbnb规则推荐的风格,就不要用了吗?!
  • 这是整个 AirBnb 规则中我唯一不喜欢的规则,所以禁用 ESLint 的 AirBnb 没有多大意义。我也不想只为一个特定的行停用特定规则,因为我相信规则的存在是有原因的,我发布这个问题是为了理解这个原因。

标签: javascript arrays eslint eslint-config-airbnb


【解决方案1】:

但是,我发现了两个问题:1. 它很难看(在我看来很难阅读)以及 2. 如果我试图访问数组的第 20 个元素,我必须使用 20 个逗号吗?

我同意它很难看,是的,您需要 20 个逗号才能单独访问元素 20。如果这是您做一两次的事情,请考虑禁用该行的规则。

// eslint-disable-next-line prefer-destructuring
let foo = myArray[20];

如果您经常这样做,请考虑完全禁用该规则。在您的eslint.rc 文件中:

{
  "rules": {
    "prefer-destructuring": "off",
  }
}

如果完全关闭它比你想要的更多(比如,你想为对象保留它,但为数组关闭它),你可以在你的 eslint.rc 中添加一些不同的配置集。可以看到各种配置选项on this page

【讨论】:

    【解决方案2】:

    你可以结合对象字面量和数组来拥有

    const {20: foo} = myArray;
    

    这里,20 是一个键,因为数组本质上只是带有方法的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-22
      • 2020-04-25
      • 2019-02-04
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      相关资源
      最近更新 更多