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

Pau*_*erg 3 typescript apollo apollo-client

我有以下代码:

const client: ApolloClient<any> = new ApolloClient({
  uri: MY_URI,
});
Run Code Online (Sandbox Code Playgroud)

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

VSCode 工具提示

问题是TCache无法从以下位置导入apollo-client

import { TCache } from "apollo-client"; // does NOT work
Run Code Online (Sandbox Code Playgroud)

我还克隆了他们的存储库并试图找到 的定义TCache,但没有。

Dav*_*ing 5

通常,您会向客户端提供缓存选项,然后提供该类型的“缓存形状”。您可以通过查看以下类型来看到这一点ApolloClient

\n
export declare type ApolloClientOptions<TCacheShape> = {\n    \xe2\x80\xa6\n    cache: ApolloCache<TCacheShape>;\n    \xe2\x80\xa6\n};\n
Run Code Online (Sandbox Code Playgroud)\n

对于内置的InMemoryCache,查看代码可以得出其形状是NormalizedCacheObject

\n
export declare class InMemoryCache extends ApolloCache<NormalizedCacheObject> {\n    \xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n

所以你的代码将变成:

\n
import { ApolloClient, InMemoryCache, NormalizedCacheObject} from "@apollo/client";\n\nconst client: ApolloClient<NormalizedCacheObject> = new ApolloClient({\n  cache: new InMemoryCache(),\n  uri: MY_URI,\n});\n
Run Code Online (Sandbox Code Playgroud)\n