В классе javascript, как мне super() все существующие аргументы?

Гипотетически, если родительский класс имеет так много аргументов в классе, который нужно наследовать, как мне супер() все существующие аргументы в родительских элементах для его расширенного класса?

Должен ли я выяснить все аргументы в конструкторе родительского класса и вручную вводить их все?

Я пытался погуглить, например, «супер все, супер все, супер все существующие и т. д.», но так и не нашел ответа.

Заранее спасибо.

Если вы ищете способ передать все аргументы из конструктора в дочернем классе в его родительский класс, взгляните на этот другой вопрос о переполнении стека

Anon7250 16.12.2020 05:53
so many classes to be inherited ... нет, только один (напрямую)
Jaromanda X 16.12.2020 05:53

@JaromandaX извините, это была опечатка, я имел в виду, что «так много аргументов» нужно наследовать

BS100 16.12.2020 06:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
3
1 271
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если дочерний и родительский элементы принимают одни и те же аргументы, используйте остальные и спред:

class Child extends Parent {
  constructor(...args) {
    super(...args);
  }
}

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

class GrandChild extends Child {
  constructor(...args) {
    super(...args);
  }
}

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

Если у дочернего элемента есть дополнительный завершающий аргумент, передача его родителю, если родитель не определяет такой аргумент, будет работать нормально.

Если у дочернего элемента есть дополнительный ведущий аргумент, используйте:

class Child extends Parent {
  constructor(childArg, ...args) {
    super(...args);
  }
}

как насчет того, чтобы унаследовать все и добавить еще один аргумент в дочерний класс? возможно ли это с помощью оператора распространения?

BS100 16.12.2020 06:45

Да, хотя как зависит от того, где лишний аргумент

CertainPerformance 16.12.2020 06:45

Как??? например, дочерний элемент extends parent {structor(...args,newone){ super(...args); this.newone = newone}... это выдает мне сообщение об ошибке.

BS100 16.12.2020 06:47

Было бы неплохо добавить сюда, как добавлять типы Typescript. Я расширяю класс и не касаюсь аргументов конструктора (и я хочу, чтобы типы «были такими же», как у Родителя, без необходимости самостоятельно переопределять типы Родителя).

svenema 08.03.2023 16:57

Другие вопросы по теме