Я создаю инструмент для автоматической генерации функций из переданных функций. Как заставить машинописные наборы не смешивать параметры переданной функции
Версия TypeScript: v3.6.3
type IActions<AS extends IDefinitions<AS>> =
Record<keyof AS, (...args: Parameters<AS[keyof AS]>) => any>;
export type IDefinitions<D> = Record<keyof D, (...args: any[]) => Generator>;
function creator <D extends IDefinitions<D>>(def: D): IActions<D> {
return {} as any;
}
const u = creator({
*getUser(name: string) {
yield Promise.all([]);
},
*test(id: number, name: string) {
yield Promise.race([]);
},
})
// The function type is: getUser(...args: [string] | [number, string]): any
u.getUser()
Также можно увидеть игровую площадку
Кажется, должны возвращаться правильные параметры, например, так:
// getUser(name: string): any
u.actions.getUser('test');
// getUser(id: number, name: string): any
u.actions.test(123, 'test');