【问题标题】:ES6 reduce array without typescript errorES6减少数组没有打字稿错误
【发布时间】:2021-07-23 19:21:34
【问题描述】:

我想删除第一个数组元素,而不修改原来的(不可变的),
像这样:

function getArray(): number[] {
   return [1, 2, 3, 4, 5];
}
function getAnother(): number[] {
   const [first, ...rest] = getArray();
   return rest;
}

代码有效,但打字稿检查抱怨:

'first' is assigned a value but never used  @typescript-eslint/no-unused-vars

有没有优雅/更好的方式来对getAnother() 进行社交操作?

【问题讨论】:

  • arr.slice(1)?
  • 另外,抱怨的不是打字稿检查,这是 ESLint 规则。与几乎任何 ESLint 规则一样,您可以调整或禁用它(甚至在本地)。

标签: javascript typescript ecmascript-6


【解决方案1】:

您可以忽略带有逗号的元素。

 const [, ...rest] = getArray();

Array#slice也可以用在这种情况下。

const rest = getArray().slice(1);

【讨论】:

  • @HeyyyMarco 很高兴为您提供帮助。
【解决方案2】:

你可以使用默认的数组方法

Array.prototype.slice

试试这个

function getAnother(): number[] {
    return getArray().slice(1)
}

【讨论】:

    【解决方案3】:

    这里的一种常见做法是用下划线前缀未使用的变量或参数,如下所示:

    const [_first, ...rest] = getArray();
    const [_, ...rest] = getArray();
    

    这使您仍然可以使用可见或带标签的占位符。尽管这无需在 Visual Studio Code 的语法高亮中进行配置即可工作,但您可能需要使用 varsIgnorePattern and argsIgnorePattern 为您的 ESLint 使用进行配置,在 ESLint 中为 is suggested in documentation as "^_"

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 1970-01-01
      • 2015-10-06
      • 2018-10-06
      • 2016-12-12
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      相关资源
      最近更新 更多