I want to do the following demonstrated with an Array
with a Map
:
export class Example {
// No errors
public withArray(): Promise<Item[]> {
var promises: Promise<Item>[] = [];
promises.push(Promise.resolve(Item));
return Promise.all(promises);
}
// Issues with initialisation
public withMap(): Promise<Map<Item, Item>> {
var promises: Promise<Map<Item, Item>> = new Map();
promises.push(Promise.resolve([Item, Item]));
return Promise.all(promises);
}
}
It complains with the following error message:
Type 'Map<any, any>' is missing the following properties from type 'Promise<Map<Item, Item>>': then, catch, finally
My question would be, how do I define the type Map
on the promises
so that I can add [Key, Value]
to a Map that will then get returned.
CodePudding user response:
TL;DR: var promises = Map<Item, Promise<Item>> = new Map()
.
An alternative way to write Promise<Item>[]
would be Array<Promise<Item>>
.
Notice that both cases indicate the same: an Array
of Promise
s that should resolve with Item
. Array -> promises -> items.
In your second case, you are typing Promise<Map<Item, Item>>
, which is a Promise -> Map -> items, instead of Map -> promises -> items. What you are looking for is a Map<Item, Promise<Item>>
.
Also, there seem to be quite a few other issues with that code. Notice that Map
does not have a push
method.