es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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[]>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para definir el tipo Map en la variable promises, es necesario especificar explícitamente los tipos de clave y valor del Map utilizando el constructor Map. Así es cómo puede modificar la función withMap para hacerlo:

    public withMap(): Promise<><item, item="">> {
        const promises: Promise<[Item, Item]>[] = [];
        promises.push(Promise.resolve([Item, Item]));
        return Promise.all(promises)
            .then(values => new Map<item, item="">(values));
    }
    

    En esta versión modificada de withMap, definimos el array promises para contener instancias de Promise<[Item, Item]>, es decir, promesas que se resuelven a un array de dos instancias de Item. Entonces, una vez que llamamos a Promise.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 objeto Map con los pares clave-valor que queremos devolver desde la función. Lo devolvemos como una promesa resuelta envolviéndolo en Promise.resolve().</item,></item,></item,>

Comments are closed.