Задать вопрос
@igoryusha22

Как предписать тип классу так, чтобы ts считал что мы унаслодовались?

Допустим у нас есть какой-то класc Widget, и мы знаем, что потом, сторонний код добавит в prototype нашего класса определенные методы.

Можем ли мы заранее написать типы, чтобы вызывая `doStuff`, ts считал что он существует?

Или как костыль, писать класс, в котором будут моки, а затем наследовать его?

class Widget {
  render() {
    this.doStuff();
  }
}

// потом это сделает сторонний код
Widget.prototype.doStuff = () => 'doingstuff';
  • Вопрос задан
  • 32 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
Можно с помощью declaration merging, но осторожно. В таких штуках все риски ты берёшь на себя:
class Widget {
  render() {
    this.doStuff();
  }
}

interface Widget {
    doStuff(): string
}

// потом это сделает сторонний код
Widget.prototype.doStuff = () => 'doingstuff';
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov
Помог ответ? Отметь решением.
Что-то типа такого:
abstract class AbstractWidget {
  public doStuff(): void {}
}

class Widget extends AbstractWidget {
  render() {
    console.log(this.doStuff());
  }
}

Widget.prototype.doStuff = () => 'doingstuff';

const widget = new Widget();

widget.render();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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