使用对象解构重构代码触发no-unused-vars错误如何合规解决
你当前的重构写法本身存在逻辑问题,并非eslint误报。
因为quantity和inStock都是数字类型的基本值,从对象参数中解构出来后拿到的是独立的值拷贝,你对这两个解构变量做自增自减操作,完全不会影响传入的原product对象的属性,本质属于无效代码,eslint的报错只是准确指出了这一点。
下面是同时满足你要求、逻辑对齐原代码、且能用上解构提升可读性的方案:
方案1:函数内部解构读取属性,修改仍作用于原对象
你可以只把解构用来简化读取判断的逻辑,修改操作还是直接作用在原对象上,既保留了解构的可读性优势,也不会触发no-unused-vars报错:
remove(product) { // 仅解构用来做条件判断的属性,简化读取逻辑 const { quantity } = product if (quantity > 0) { product.quantity-- product.inStock++ } }
方案2:参数位使用解构的兼容写法
如果一定要在参数位使用解构语法,也可以通过参数默认值的写法实现,逻辑和原代码完全等价:
remove(product, { quantity } = product) { if (quantity > 0) { product.quantity-- product.inStock++ } }
这个写法所有定义的变量都有实际使用场景,不会触发eslint报错。
内容的提问来源于stack exchange,提问作者mjwals
相关产品推荐
相关产品推荐

