Spec-Zone.ru › ESLint

no-dupe-class-members

Запретить дублирование членов класса

✅ Рекомендуется

Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило

Если у членов класса объявлены имена, совпадающие с именами других членов, последнее объявление молча перезаписывает остальные. Это может привести к неожиданному поведению.

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

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

Подробности правила

Это правило предназначено для обнаружения дублирующихся имен у членов класса.

Примеры неправильного кода для этого правила:

Открыть в песочнице
/*eslint no-dupe-class-members: "error"*/

class A {
  bar() { }
  bar() { }
}

class B {
  bar() { }
  get bar() { }
}

class C {
  bar;
  bar;
}

class D {
  bar;
  bar() { }
}

class E {
  static bar() { }
  static bar() { }
}

Примеры правильного кода для этого правила:

Открыть в песочнице
/*eslint no-dupe-class-members: "error"*/

class A {
  bar() { }
  qux() { }
}

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

class C {
  bar;
  qux;
}

class D {
  bar;
  qux() { }
}

class E {
  static bar() { }
  bar() { }
}

Это правило также поддерживает синтаксис типов TypeScript. Оно поддерживает определения перегруженных методов TypeScript.

Примеры правильного кода TypeScript для этого правила:

Открыть в песочнице
/* eslint no-dupe-class-members: "error" */

class A {
	foo(value: string): void;
	foo(value: number): void;
	foo(value: string | number) {} // ✅ This is the actual implementation.
}

Параметры

У этого правила нет параметров.

Когда не следует использовать это правило

Это правило не следует использовать в средах ES3/5.

В ES2015 (ES6) и более поздних версиях это правило можно отключить, если вы не хотите получать уведомления о дублирующихся именах членов класса.

Проверяется TypeScript

Это правило можно безопасно отключить при использовании TypeScript, поскольку компилятор TypeScript выполняет эту проверку.

Версия

Это правило появилось в ESLint v1.2.0.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-dupe-class-members

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API