Versions

no-dupe-class-members

Disallow duplicate class members

Recommended

The "extends": "eslint:recommended" property in a configuration file enables this rule

如果在类成员中存在同名的声明,最后一个声明会无声地覆盖其他声明。 这可能会导致意外的行为。

/*eslint-env es6*/

class Foo {
  bar() { console.log("hello"); }
  bar() { console.log("goodbye"); }
}

var foo = new Foo();
foo.bar(); // goodbye

规则细节

这条规则旨在标记类成员中的重复名称的使用。

示例

使用此规则的错误示例:

Open in Playground
/*eslint no-dupe-class-members: "error"*/

class Foo {
  bar() { }
  bar() { }
}

class Foo {
  bar() { }
  get bar() { }
}

class Foo {
  bar;
  bar;
}

class Foo {
  bar;
  bar() { }
}

class Foo {
  static bar() { }
  static bar() { }
}

使用此规则的正确示例:

Open in Playground
/*eslint no-dupe-class-members: "error"*/

class Foo {
  bar() { }
  qux() { }
}

class Foo {
  get bar() { }
  set bar(value) { }
}

class Foo {
  bar;
  qux;
}

class Foo {
  bar;
  qux() { }
}

class Foo {
  static bar() { }
  bar() { }
}

何时不用

不应该在 ES3/5 环境中使用此规则。

在 ES2015(ES6)或更高版本中,如果你不想被通知类成员中的重复名称,你可以安全地禁用这个规则。

在使用 TypeScript 时,也可以安全地禁用此规则,因为 TypeScript 编译器已经检查过重复的函数实现。

Version

This rule was introduced in ESLint v1.2.0.

Resources

更改语言