我期待这段代码,在Typescript 2.2中:
Promise.all([1, true]).then(([x]) => x + 1);
在做了一些挖掘之后,我注意到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
类型?让编译器选择我喜欢的类型定义吗?
答案 0 :(得分:0)
这似乎解决了这个问题:
"lib": ["dom", "es2015.promise", "es2017"],