如何在创建 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,
});
我有以下代码:
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,
});