当ESLint的prefer-destructuring规则提示不合理时该如何处理?
问题解答
规则期望的正确写法
你提供的赋值场景下,prefer-destructuring规则要求你使用数组解构赋值的语法完成操作,示例如下:
// 规则判定的错误写法 obj.someVar = myList[0]; // 规则期望的正确写法 [obj.someVar] = myList;
规则设计的原因
这个规则的核心设计逻辑是统一所有索引/属性访问的赋值场景语法,不区分赋值目标是新声明的变量还是已有对象的属性:
- 规则设计者认为统一使用解构语法,可以降低理解成本,开发者不需要区分赋值目标类型,就能直观判断代码是从集合中提取某个位置的元素/某个键对应的属性
- 如果是一次性提取多个数组元素/对象属性赋值给不同目标,解构语法确实可以精简代码行数,提升可读性
- 规则最初设计时没有单独对「单元素提取、赋值给对象属性」这类低收益场景做例外处理,默认覆盖所有赋值场景
合理的优化配置
大部分开发者都认为「给对象属性赋值单个元素」这类场景强制要求解构没有实际收益,甚至会降低代码可读性,你可以通过修改ESLint配置关闭这类不必要的校验,仅保留变量声明场景的规则校验:
// .eslintrc 相关配置项 { "rules": { "prefer-destructuring": ["error", { // 变量声明场景保留解构要求 "VariableDeclarator": { "array": true, "object": true }, // 赋值表达式场景关闭解构要求 "AssignmentExpression": { "array": false, "object": false } }] } }
内容的提问来源于stack exchange,提问作者Shay Yzhakov
相关产品推荐
相关产品推荐

