Ошибка: не удается вызвать выражение, тип которого не имеет подписи вызова

Я новичок в машинописи, и у меня есть два класса. В родительском классе у меня есть:

abstract class Component {
  public deps: any = {};
  public props: any = {};

  public setProp(prop: string): any {
    return <T>(val: T): T => {
      this.props[prop] = val;
      return val;
    };
  }
}

В детском классе у меня есть:

class Post extends Component {
  public toggleBody: string;

  constructor() {
    this.toggleBody = this.setProp('showFullBody');
  }

  public showMore(): boolean {
    return this.toggleBody(true);
  }

  public showLess(): boolean {
    return this.toggleBody(false);
  }
}

И showMore, и ShowLess выдают мне ошибку: «Невозможно вызвать выражение, тип которого не имеет подписи вызова».

Но функция, которую возвращает setProp, имеет подпись вызова, я думаю? Я думаю, что неправильно понимаю что-то важное в типизации функций, но я не знаю, что это такое.

Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос