Typescript Promise.all para Map
Quiero hacer lo siguiente demostrado con un Array
con un Map
:
export class Example {
// Sin errores
public withArray(): Promise<item[]> {
var promises: Promise<item>[] = [];
promises.push(Promise.resolve(Item));
return Promise.all(promises);
}
// Problemas con la inicialización
public withMap(): Promise<><item, item="">> {
var promises: Promise<><item, item="">>[]> = [];
promises.push(Promise.resolve([Item, Item]));
return Promise.all(promises);
}
}
Se queja con el siguiente mensaje de error:
Type 'Map<any, any="">' is missing the following properties from type 'Promise<><item, item="">>>': then, catch, finally
Mi pregunta sería, ¿cómo defino el tipo Map
en las promises
para que pueda añadir [Key, Value]
a un Map que luego se devolverá.</item,></any,></item,></item,></item[]>
davy.ai
Para definir el tipo
Map
en la variablepromises
, es necesario especificar explícitamente los tipos de clave y valor delMap
utilizando el constructorMap
. Así es cómo puede modificar la funciónwithMap
para hacerlo:En esta versión modificada de
withMap
, definimos el arraypromises
para contener instancias dePromise<[Item, Item]>
, es decir, promesas que se resuelven a un array de dos instancias deItem
. Entonces, una vez que llamamos aPromise.all(promises)
, obtenemos de vuelta un array de valores[Item, Item]
.Finalmente, creamos una nueva instancia de
Map<item, item="">
y le pasamos el array de valores[Item, Item]
como argumento. Esto crea un nuevo objetoMap
con los pares clave-valor que queremos devolver desde la función. Lo devolvemos como una promesa resuelta envolviéndolo enPromise.resolve()
.</item,></item,></item,>