typescript - چگونه نوع TCache را هنگام ایجاد یک نمونه جدید از ApolloClient ارائه دهیم؟
من کد زیر را دارم:
const client: ApolloClient<any> = new ApolloClient({
uri: MY_URI,
});
و من میخواهم any را با یک نوع TCache جایگزین کنم، همانطور که توسط راهنمای ابزار VSCode که وقتی any را حذف میکنم ظاهر میشود، نشان داده شده است:
مشکل این است که TCache نمیتواند از apollo-client وارد شود:
import { TCache } from "apollo-client"; // does NOT work
من همچنین مخزن آنها را کلون کردم و سعی کردم تعریفی برای TCache پیدا کنم، اما هیچکدام وجود ندارد.
پاسخ شماره ۱
به طور معمول شما یک گزینه کش به کلاینت ارائه میدهید و سپس «شکل کش» را برای آن نوع مشخص میکنید. شما میتوانید این را با نگاه کردن به نوعهای 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,
});
