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,
});