import { Ref } from "vue"; export const getVTreeMethods = >(apiMethods: readonly T[], ref: Ref): Pick => { return apiMethods.reduce((prev, cur) => { const fn = (...args: any[]) => { const value = ref.value?.[cur] if (typeof value !== 'function') return return value(...args) } prev[cur] = fn as K[T] return prev }, {} as Pick) } type PickReadonly = { readonly [P in K]: T[P]; }; export const pickReadonly = ( obj: Readonly, ...keys: K[] ): PickReadonly => { const picked: Partial> = {} keys.forEach(key => { if (obj.hasOwnProperty(key)) { picked[key] = obj[key] } }) return picked as PickReadonly }