Можете ли вы использовать различные аргументы конструктора в расширенном классе в ES6? - PullRequest
0 голосов
/ 29 апреля 2020

Я получаю предупреждения в коде Visual Studio, когда использую конструктор с другими аргументами. Должны ли аргументы в расширенных классах совпадать с суперклассом?

Класс:

class Options {
  constructor(name = null) {
     this.name = name;
  }
}

class ExtendedClass extends Options {
  constructor(colors = null, option = false) {
    if (colors!=null) {
      this.numberOfColors = colors;
    }
    this.option = option;
  }
}

ОБНОВЛЕНИЕ:
Похоже, использование разных аргументов не имеет значения, но проблема в том, что вызов super является проблема? Нужно проверить больше, но похоже, что это проблема:

class ExtendedClass extends Options {
  constructor(colors = null, option = false) {
    super();

    if (colors!=null) {
      this.numberOfColors = colors;
    }
    this.option = option;
  }
}

1 Ответ

1 голос
/ 29 апреля 2020

Должны ли аргументы в расширенных классах [конструкторы] совпадать с суперклассом [конструктор]?

Краткий ответ: нет.

Однако super() ожидает те же аргументы, что и конструктор суперкласса. (super() вызывает конструктор суперкласса с предоставленными аргументами.)

...