reactjs - كيف تمرر واجهة عامة إلى استدعاء create في zustand باستخدام TypeScript؟
لذلك كنت أواجه صعوبة في العثور على إجابة حول ما هو الصياغة الصحيحة لتمرير واجهة عامة عند استدعاء دالة تستقبل نوعًا عامًا.
ما أريد فعله هو const data=itemStore<T>(state => state.data)
import { create } from "zustand";
interface Item<T> {
count: number
data: T
}
const itemStore = create<Item<T>>()((set) => ({
count: 1,
data: "generic"
})
الإجابة رقم 1
عاد من المنفى، هذه هي إجابتك يا صديقي:
// store file
type BaseStore<T> = {
items: T;
};
const INITIAL_ITEMS_DATA: BaseStore<{}>['items'] = {};
const useDataImplementation = create<BaseStore<{}>>((set) => ({
items: INITIAL_ITEMS_DATA,
}));
export const useStore = useDataImplementation as {
<T>(): BaseStore<T>;
<T, U>(selector: (s: BaseStore<T>) => U): U;
};
// Then when you call this thing you need to only pass your interface/type:
interface Item {
name: string;
price: string;
stock: boolean;
}
const store = useStore<Item>();
مع هذا سيكون لديك item مكتوبًا بشكل جيد وقوي من حيث النوع، لذا، نحن نؤكد الأنواع بجعلها نوعًا ما تكذب.
