错误:无法调用其类型缺少调用签名的表达式

2022-08-30 04:10:58

我对typescript是全新的,我有两个类。在父类中,我有:

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 返回的函数确实有一个调用签名,我想呢?我认为我误解了函数类型的重要内容,但我不知道它是什么。

谢谢!


答案 1

它返回的函数具有调用签名,但是您告诉Typescript通过添加其签名来完全忽略它。: any


答案 2

“无法调用其类型缺少调用签名的表达式。

在您的代码中 :

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);
  }
}

你有。不能将 a 作为函数调用。因此,在 上出错:和public toggleBody: string;stringthis.toggleBody(true);this.toggleBody(false);