koSakano/type-challenges

1920 - Pinia

Opened this issue · 0 comments

type MapGetters<T> = {
  [K in keyof T]: T[K] extends () => infer R ? R : T[K];
};

type ObjectDescriptor<S, G, A> = {
  id: string;
  state: () => S;
  getters?: G & ThisType<S & MapGetters<G> & A>;
  actions?: A & ThisType<S & MapGetters<G> & A>;
};

declare function defineStore<S, G, A>(
  parameters: ObjectDescriptor<S, G, A>
): S & MapGetters<G> & A;