La función foo devuelve un objeto. mecanografiado se conoce sobre la escritura que devuelve prop1 y prop2 envuelven en promesa:
const foo: ({ a, b }: { a: any; b: any; }) => Promise<{ prop1: string; prop2: string; }> Pero cuando envuelvo la función foo con la función fn , entonces la variable b que crea la devolución de llamada pierde el tipeo y se convierte en const b: (a?: any, b?: any, c?: any) => Promise<any> .
Mi pregunta es cómo arreglar eso para que TypeScript pueda saber sobre la escritura. lo que trato de obtener es la variable b será el tipo de la función que paso. en este caso es la función foo . Como eso:
const b: Promise<{ prop1: string; prop2: string; }> Intento usar T : const fn = <T>(cb: T) => { pero arroja un error en la devolución de llamada y no estoy seguro de lo que significa. No sé si corrijo en esto.
const foo = async ({ a, b }) => { console.log({ a, b }); return { prop1: 'prop1', prop2: 'prop2', }; }; const fn = (cb) => { return async (a = null, b = null, c = null) => { const results = cb({ a, b }); if (results) { return c(); } }; }; const bar = () => fn(foo); const b = bar(); // const b: (a?: any, b?: any, c?: any) => Promise<any>si entiendo bien tu pregunta puedes hacer algo como esto
const fn = <T>(cb: ({a, b}: any) => Promise<T>) => { return async (a = null, b = null, c:() => T | null = null) => { const results = cb({ a, b }); if (results) { return c(); } }; };