Skip to content
← Back to rules

eslint/no-empty-pattern 正确性

This rule is turned on by default.

它做了什么

禁止空的解构模式。

为什么这是不好的?

在使用解构时,有可能创建一个没有任何效果的模式。 当在嵌套对象解构模式的右侧使用空的大括号时,就会发生这种情况,例如:

JavaScript
// 不会创建任何变量
var {a: {}} = foo;

在此代码中,没有创建新变量,因为 a 只是位置辅助符, 而 {} 本应包含要创建的变量,例如:

JavaScript
// 创建变量 b
var {a: { b }} = foo;

在许多情况下,空对象模式是一个错误, 作者原本意图是使用默认值,例如:

JavaScript
// 创建变量 a
var {a = {}} = foo;

这两种模式之间的区别很微妙, 尤其是因为有问题的空模式看起来就像一个对象字面量。

错误 代码示例:

JavaScript
var {} = foo;
var [] = foo;
var {a: {}} = foo;
var {a: []} = foo;
function foo({}) {}
function foo([]) {}
function foo({a: {}}) {}
function foo({a: []}) {}

正确 代码示例:

JavaScript
var {a = {}} = foo;
var {a = []} = foo;
function foo({a = {}}) {}
function foo({a = []}) {}

如何使用

通过配置文件或 CLI 启用此规则,可以使用:

json
{
  "rules": {
    "no-empty-pattern": "error"
  }
}
bash
oxlint --deny no-empty-pattern

参考资料