Задать вопрос
@Scket4
Студент, изучаю frontend

Как динамически добавить метод в класс, внутри этого же класса?

Я в одном из методов класса хочу динамически создавать новые методы, названия которых, также, создаются в процессе работы.

initDOMListeners() {
    this.listeners.forEach(list => {
      const method = capitalize(list)
      this[method] =  this[method].bind(this)
      this.$root.on(list, this[method])
    })
  }


На this[method] ругается: Элемент неявно имеет тип "any", так как выражение типа "string" не может использоваться для индексации типа "DomListener(мой класс)".
В типе "DomListener" не обнаружена сигнатура индекса с параметром типа "string".:

Как можно решить эту проблему?
  • Вопрос задан
  • 408 просмотров
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
В typescript нельзя изменять существующий класс. Класс - законченная сущность. Конец.

С помощью наследования ты можешь добавить новые методы в новый класс-наследник.

И конечно, ты можешь захакать что угодно, что возможно в javascript, принудительно в обход ts, но ts об этом знать не будет и, соответственно, никакой типизации.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы