Typescript is pretty unhappy with my methods of doing this manually, so wondering if there are any official ways although they i'm pretty sure they should work objectively i.e.
export type MutationRoutes = { [K in RouteNames]: TRPCProxyClientType[K] extends { mutate: (...args: any[]) => any; } ? K : never;}[RouteNames];
export type MutationRoutes = { [K in RouteNames]: TRPCProxyClientType[K] extends { mutate: (...args: any[]) => any; } ? K : never;}[RouteNames];
If I use this
// This expression is not callable.const manageTRPCMutationForXState = async <T extends MutationRoutes>(name: T) => {const mutator = trpcProxyClient[name];mutator.mutate()...}
// This expression is not callable.const manageTRPCMutationForXState = async <T extends MutationRoutes>(name: T) => {const mutator = trpcProxyClient[name];mutator.mutate()...}
But if I do
const mutator = trpcProxyClient[name as MutationRoutes];
const mutator = trpcProxyClient[name as MutationRoutes];