Javascript 使用时反应高阶组件期望注入的道具,导致TypeScript错误
我制作了一个HOC,它为传递给组件的网络调用提供支持,因此HOC可以处理网络调用加载指示器、错误消息等 typescript不满意,代码按预期工作 在我的TestContainer.tsx中,我制作了一个getQuotes道具,由HOC注入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
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接口定义来解决的