UNPKG

@a-latte/vue2-helpers

Version:

A util package to use Vue 2 with Composition API easily

26 lines (25 loc) 1.63 kB
import { ComputedRef } from 'vue'; declare type ActionReturnType<T extends (...args: any) => any> = Promise<T extends (...args: any) => Promise<infer U> ? U : ReturnType<T>>; interface ResultMap<T> { state: ComputedRef<T>; getters: ComputedRef<T extends (...args: any) => infer U ? U : never>; mutations: T extends (a: any) => any ? () => void : T extends (a: any, b: infer U) => any ? (payload: U) => void : never; actions: T extends (a: any) => any ? () => ActionReturnType<T> : T extends (a: any, b: infer U) => any ? (payload: U) => ActionReturnType<T> : never; } declare type ResultMapKey = keyof ResultMap<any>; declare type HelperReturnType<RMK extends ResultMapKey, K extends string, Type> = { [key in K]: ResultMap<key extends keyof Type ? Type[key] : never>[RMK]; }; interface Helper<RMK extends ResultMapKey, RootType> { <K extends string>(keys: K[]): HelperReturnType<RMK, K, RootType>; <K extends string, N extends string>(namespace: N, keys: K[]): HelperReturnType<RMK, K, N extends keyof RootType ? RootType[N] : {}>; <K extends string>(map: Record<K, string | Function>): HelperReturnType<RMK, K, RootType>; <K extends string, N extends string>(namespace: N, map: Record<K, string | Function>): HelperReturnType<RMK, K, N extends keyof RootType ? RootType[N] : {}>; } export declare function createVuexHelpers<RootState, RootGetters, RootMutations, RootActions>(): { useState: Helper<"state", RootState>; useGetters: Helper<"getters", RootGetters>; useMutations: Helper<"mutations", RootMutations>; useActions: Helper<"actions", RootActions>; }; export {};