Параметры нескольких функций генерируются из переданного объекта функций - PullRequest
2 голосов
/ 07 октября 2019

Я создаю инструмент для автоматической генерации функций из переданных функций. Как заставить машинописные наборы не смешивать параметры переданной функции

Версия 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');
...