综观的类型定义Promise.all
,我看到10下的定义:
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>]): Promise<[T1, T2, T3]>;
我只包括一个长度为3的阵列,但也存在着all<T1>
all<T1, T2>
高达一路all<T1, T2, ..., T9, T10>
然而,这种不匹配的实施Promise.all
,这可能需要作为输入的阵列比10长:
let myPromise = num => Promise.resolve(num); let myPromisesArray = (new Array(20)) .fill() .map((_,i) => myPromise(i)); Promise.all(myPromisesArray).then(console.log)
我不是世界上最糟糕的开发者,但仍然,我作一个假设,谁生产的ES2015的类型定义的微软开发者更了解JS / TS比我,这引出了一个问题:
为什么Promise.all的类型定义不匹配也不它的文档也不是它的实现?