繁体   English   中英

设置组件状态时出现 TypeScript 错误:“X”类型的参数不可分配给“() => void”类型的参数

[英]TypeScript error when setting a component's state: Argument of type 'X' is not assignable to parameter of type '() => void'

调用setState时出现 TypeScript 错误: 在此处输入图像描述

这就是我实际在做的事情:

  updateRequests(requests: any, cb:Function|null = null) {
    this.setState(
      {
        requests: {
          ...this.state.requests,
          items: requests,
          loading: false,
        },
      },
      () => {
        if (cb) cb();
      }
    );

这是一个组件状态:

export interface IServersScreenState {
  requests: {
    items: [];
    loading: boolean;
    statuses: {};
    page: number;
    lastPage: number;
    scrollLoading: boolean;
  };
}

实际上不明白为什么会这样,因为我在状态中没有任何声明, requests需要看起来像()=>void

这是我的setState:

  setState<T>(...args: T[]) {
    if (this.__mounted__) {
      //@ts-expect-error spread error
      super.setState(...args) as $TSFixMe;
    }
  }

您已将 setState 定义为接受泛型,然后在调用泛型时不填写该泛型。 尝试更换

this.setState(

this.setState<IServersScreenState>(

这应该让您更接近于遵循您设置的类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM