使用解构删除 属性,没有 eslint 抱怨未使用的变量

Remove a property using destructuring, without eslint complaining about unused variables

考虑以下代码,我使用解构创建了 x 的“副本”,其中一个属性被删除:

const x = { a: 1, b: 2, c: 3};
const { a, ...x2} = x;
console.log(x);
console.log(x2);

如果我这样做,@typescript-eslint/no-unused-vars会认为没有使用a的错误。

如何更改代码来修复错误,而不明确要求 eslint 忽略有问题的行,最好仍然使用解构语法? IE。我真的不想使用 delete,也不想显式枚举所有其他属性,例如 const x2 = {b: x.b, c: x.c }.

是否有花哨的语法或奇怪的 eslint 规则让我吃蛋糕也吃它?

我通常用这个工具删除一些道具:

const removeProperty = <Obj, Prop extends keyof Obj>(obj: Obj, prop: Prop) => {
  const { [prop]: _, ...rest } = obj;
  return rest
}

请检查它是否适合您的情况。

诀窍是对未使用的变量使用下划线 _

您可以允许在 eslint 规则中明确使用 _

该规则有一个名为 ignoreRestSiblingsnewly added option

您可以将其设置为 true 以忽略您的情况:

{ "ignoreRestSiblings": true }