我正在尝试为RTKQ查询创建一个通用的TypeScript Package 器。我坚持的最后一个目标是获取通用甚至特定查询的返回类型。下面我将包括我的测试中的一些主要代码行,但here is a code sandbox显示了我的完整代码。
type EndpointKey = keyof typeof api.endpoints;
type Endpoint<EndpointName extends EndpointKey> = typeof injectedAPI.endpoints[EndpointName];
type ReturnQuery<E extends EndpointKey> = Endpoint<E>["useQuery"];
// Type is Record<string, any> & UseQuerySubscriptionResult<> - where is the UseQueryStateResult<> at? Might not be relevant but seems suspicious.
type PuppiesQueryReturnType = ReturnType<ReturnQuery<"getPuppies">>;
const queryReturn: PuppiesQueryReturnType = {} as PuppiesQueryReturnType;
const { data, foo, refetch, isLoading, error } = queryReturn; // All values have type any except for refetch
我不确定这是否是RTKQ类型中的一个潜在错误,或者是否有一些步骤我遗漏或做得不正确。
注意:并不是所有这些都是我的原始代码。其中大部分是从互联网上的各种帖子中复制的。
1条答案
按热度按时间y3bcpkx11#
看起来我的问题的答案是
@reduxjs/toolkit/dist/query/react/buildHooks
的类型TypedUseQueryHookResult
。我找不到一个参考它在文档中,但如果有人有链接,请评论,我会更新。用这个我可以做一些事情,
可能有一个更简单的方法来做这件事,而不需要推理,但这会起作用。
感谢acemarke对Reactiflux Discord的帮助!