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() { }
() { }
}
class B {
bar() { }
get () { }
}
class C {
bar;
;
}
class D {
bar;
() { }
}
class E {
static bar() { }
static () { }
}
Примеры правильного кода для этого правила:
/*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