地图的打字稿 Promise.all

Typescript Promise.all for Map

我想执行以下使用 ArrayMap 演示的操作:

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);
    }
}

它抱怨以下错误消息:

Type 'Map<any, any>' is missing the following properties from type 'Promise<Map<Item, Item>>': then, catch, finally

我的问题是,如何在 promises 上定义类型 Map,以便我可以将 [Key, Value] 添加到 Map 然后返回。

TL;DR: var promises = Map<Item, Promise<Item>> = new Map().

另一种写 Promise<Item>[] 的方法是 Array<Promise<Item>>。 请注意,这两种情况表示相同:Promise 中的 Array 应该用 Item 解析。 数组 -> 承诺 -> 项目。

在你的第二种情况下,你正在输入 Promise<Map<Item, Item>>,这是一个 Promise -> Map -> 项目,而不是 Map -> promises -> 项目。您正在寻找的是 Map<Item, Promise<Item>>.

此外,该代码似乎还有很多其他问题。请注意 Map 没有 push 方法。