Javascript 使用时反应高阶组件期望注入的道具,导致TypeScript错误

Javascript 使用时反应高阶组件期望注入的道具,导致TypeScript错误,javascript,reactjs,typescript,higher-order-components,Javascript,Reactjs,Typescript,Higher Order Components,我制作了一个HOC,它为传递给组件的网络调用提供支持,因此HOC可以处理网络调用加载指示器、错误消息等 typescript不满意,代码按预期工作 在我的TestContainer.tsx中,我制作了一个getQuotes道具,由HOC注入 Type error: Property 'getQuotes' is missing in type '{ message: string; }' but required in type 'Readonly<Pick<OwnProps &am

我制作了一个HOC,它为传递给组件的网络调用提供支持,因此HOC可以处理网络调用加载指示器、错误消息等

typescript不满意,代码按预期工作

在我的TestContainer.tsx中,我制作了一个getQuotes道具,由HOC注入

Type error: Property 'getQuotes' is missing in type '{ message: string; }' but required in type 'Readonly<Pick<OwnProps & NetworkProps, "message" | "getQuotes">>'.  TS2741

    25 |
  > 26 |         <TestContainer message="lala" />
       |          ^
    27 |       </div>
    28 |     );
    29 |   }
但当我在App.tsx中使用包装导出组件时,它抱怨我没有指定HOC注入的道具

Type error: Property 'getQuotes' is missing in type '{ message: string; }' but required in type 'Readonly<Pick<OwnProps & NetworkProps, "message" | "getQuotes">>'.  TS2741

    25 |
  > 26 |         <TestContainer message="lala" />
       |          ^
    27 |       </div>
    28 |     );
    29 |   }
您的getQuotes属性定义为require。当您将getQuotes作为可选项进行签名时,它不会给出类型错误

interface NetworkProps {
  getQuotes?: (n: number) => Promise<any>;
}
您的getQuotes属性定义为require。当您将getQuotes作为可选项进行签名时,它不会给出类型错误

interface NetworkProps {
  getQuotes?: (n: number) => Promise<any>;
}

是的,可选道具可以作为一种解决方法。但我认为应该可以用另一种方式来做。就像组件与redux连接一样,redux将状态和调度映射到props。所以我要寻找的是一个技巧,它让typescript知道包装好的TestContainer应该只拥有自己的道具,因为其余的将被注入。是的,可选道具可以是一个解决方法。但我认为应该可以用另一种方式来做。就像组件与redux连接一样,redux将状态和调度映射到props。所以我要找的是一个让typescript知道包装好的TestContainer应该只拥有自己的道具的技巧,因为其余的都会被注入。你有没有想过这个问题?对我来说,这是通过确保定义了接口,然后在HOC中导出来解决的,然后导入HOC-props接口定义你知道吗?对我来说,这是通过确保定义了接口,然后在HOC本身中导出,然后导入HOC-props接口定义来解决的