打字稿promise.all多个定义

时间:2017-04-16 13:02:28

标签: typescript typescript2.0

我期待这段代码,在Typescript 2.2中:

Promise.all([1, true]).then(([x]) => x + 1);

返回2,但它没有。这就是发生的事情: Error in visual studio code

在做了一些挖掘之后,我注意到typescript有两个Promise.all定义的文件,

lib.es2015.promise.d.ts以这种方式定义:

all<T1, T2>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<[T1, T2]>;

lib.es2015.iterable.d.ts以这种方式定义:

all<TAll>(values: Iterable<TAll | PromiseLike<TAll>>): Promise<TAll[]>;

在我的例子中,问题是编译器正在使用可迭代版本。

我在此设置中使用tsconfig.json

{
...
"lib": ["dom", "es2017"]
}

所以我的问题是,我该如何解决这个问题? Coerce Promise.all类型?让编译器选择我喜欢的类型定义吗?

1 个答案:

答案 0 :(得分:0)

这似乎解决了这个问题:

"lib": ["dom", "es2015.promise", "es2017"],