export type ActionCreator = { [K in keyof T]: T[K] extends (...args: infer U) => infer R ? Include : never; }; type Include = B extends A ? (...args: U) => { type: string; args: U } : never; export type ValidState = B extends A ? B : never;