使用解构删除 属性,没有 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 规则中明确使用 _
。
该规则有一个名为 ignoreRestSiblings
的 newly added option。
您可以将其设置为 true 以忽略您的情况:
{ "ignoreRestSiblings": true }
考虑以下代码,我使用解构创建了 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 规则中明确使用 _
。
该规则有一个名为 ignoreRestSiblings
的 newly added option。
您可以将其设置为 true 以忽略您的情况:
{ "ignoreRestSiblings": true }