export type PromiseProps = { [K in keyof T]?: Promise }; export async function promiseProps>(obj: PromiseProps): Promise { const promKeys = Object.keys(obj) as (keyof T)[]; return (await Promise.all(Object.values(obj))) .reduce((acc: T, cur, idx) => { acc[promKeys[idx]] = cur; return acc; }, {}); }