如何在创建 ApolloClient 的新实例时提供 TCache 类型?

How to provide the TCache type when creating a new instance of ApolloClient?

我有以下代码:

const client: ApolloClient<any> = new ApolloClient({
  uri: MY_URI,
});

我想将 any 替换为 TCache 类型,如我删除 any 时弹出的 VSCode 工具提示所示:

问题是 TCache 无法从 apollo-client 导入:

import { TCache } from "apollo-client"; // does NOT work

我也克隆了他们的 repo 并试图找到 TCache 的定义,但是有 none.

通常您会向客户端提供缓存选项,然后为该类型提供“缓存形状”。您可以通过查看 ApolloClient:

的类型来了解这一点
export declare type ApolloClientOptions<TCacheShape> = {
    …
    cache: ApolloCache<TCacheShape>;
    …
};

对于内置的 InMemoryCache,查看代码可知其形状为 NormalizedCacheObject:

export declare class InMemoryCache extends ApolloCache<NormalizedCacheObject> {
    …
}

因此您的代码将变为:

import { ApolloClient, InMemoryCache, NormalizedCacheObject} from "@apollo/client";

const client: ApolloClient<NormalizedCacheObject> = new ApolloClient({
  cache: new InMemoryCache(),
  uri: MY_URI,
});