ES6: чтобы классы имели одно определение для каждого метода - PullRequest
0 голосов
/ 24 марта 2020

Недавно, после слияния vcs, мы обнаружили, что классы ES6 (по крайней мере, в NodeJS) позволяют вам определять метод дважды. то есть приведенная ниже программа работает без жалоб.

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

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

В нашем примере с реальным миром два определения метода были довольно далеко друг от друга в исходном файле, и это на некоторое время поставило нас в тупик. Есть ли способ заставить классы ES6 в NodeJS в не разрешить это? Есть ли флаг, который мы можем запустить node, с которым это не разрешается, или, может быть, правило es-lint? Или о какой-то третьей вещи, о которой я не думаю?

Нам бы хотелось что-то, что помешало бы запуску нашей программы, если бы был один класс с двумя определенными методами.

1 Ответ

1 голос
/ 24 марта 2020

ESLint предоставляет правило no-dupe-class-members для обнаружения проблем такого типа. Это часть конфигурации eslint:recommended, поэтому, если вы еще не получили ошибку, скорее всего, вы ее не включили. Включение указанного правила c легко, если вы хотите пойти по этому пути, но я бы действительно подумал о включении eslint:recommended в целом, чтобы вы сами меньше обслуживали. Вы всегда можете отключить предупреждения о том, что eslint:recommended активирует то, что вам не нравится, но тогда, по крайней мере, вам не нужно самостоятельно поддерживать полный список подключаемых модулей, а вместо этого поддерживать список вещей, которые нужно выбрать * 1006. * out вместо.

...