ES6:对于 类 每个方法都有一个单一的定义

ES6: For Classes to have a Single Definition for Each Method

最近,在 vcs 合并出错后,我们发现 ES6 classes(至少在 NodeJS 中)允许您定义一个方法两次。即下面的程序 运行s 没有投诉。

class Test {
  foo() {
    console.log("first one")
  }

  foo() {
    console.log("second one")
  }
}
const test = new Test;
test.foo()

在我们的真实示例中,源文件中的两个方法定义相距甚远,这让我们困惑了一段时间。有没有办法强制 NodeJS 中的 ES6 classes not 允许这样做?有没有我们可以 运行 node 不允许这样做的标志,或者可能是 es-lint 规则?或者我没有想到的第三件事?

如果有一个 class 定义了两个方法,我们基本上会想要阻止我们的程序 运行ning 的东西。

ESLint 提供了 no-dupe-class-members 规则来检测此类问题。这是 eslint:recommended 配置的一部分,因此如果您还没有收到错误,则很可能是您没有启用它。如果这是您想要采用的路线,则启用特定规则很容易,但我真的会考虑一般启用 eslint:recommended 以便您自己维护的更少。您可以随时关闭 eslint:recommended 激活您不喜欢的警告,但至少您不必自己维护一个完整的选择加入插件列表,而是维护一个要选择的列表out of instead.