Open yunliuyan opened 11 months ago
declare function PromiseAll<T extends unknown[]>(values: readonly [...T]): Promise<{[p in keyof T]: T[p] extends Promise<infer R> ? R : T[p]}>
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise<string>((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
// expected to be `Promise<[number, 42, string]>`
const p = Promise.all([promise1, promise2, promise3] as const)
const t = PromiseAll([promise1, promise2, promise3] as const)
将函数的参数,传入到Promise,若是元素是promise要取对应的具体基础类型
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise<string>((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
declare PromiseAll = <T extends any[]>(params: [...T]) => Promise<{key in keyof T: T[key] extends Promise<infer R> ? R : T[key]}>
// expected to be `Promise<[number, 42, string]>`
const p = Promise.all([promise1, promise2, promise3] as const)
declare function PromiseAll<T extends unknown[]>(values: readonly [...T]): Promise<{[p in keyof T]: T[p] extends Promise<infer R> ? R : T[p]}>
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise<string>((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
// expected to be `Promise<[number, 42, string]>`
const promiseTest = Promise.all([promise1, promise2, promise3] as const)
const promiseTest1 = PromiseAll([promise1, promise2, promise3] as const)
const promiseTest2 = PromiseAll([1, 2, Promise.resolve(3)])
// 实现一个通用Last<T>,它接受一个数组T并返回其最后一个元素的类型。
// 键入函数PromiseAll,它接受PromiseLike对象数组,返回值应为Promise<T>,其中T是解析的结果数组。
declare function PromiseAll<T extends any[]>(values: readonly [...T]): Promise<{ [key in keyof T]: T[key] extends Promise<infer R> ? R : T[key] }>
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise<string>((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
// expected to be `Promise<[number, 42, string]>`
const p = Promise.all([promise1, promise2, promise3] as const)
const promiseAllTest1 = PromiseAll([1, 2, 3] as const)
const promiseAllTest2 = PromiseAll([1, 2, Promise.resolve(3)] as const)
const promiseAllTest3 = PromiseAll([1, 2, Promise.resolve(3)])
type ttt = typeof Promise.resolve(3);
Promise.all
![#built-in](https://img.shields.io/badge/-%23built--in-999)
键入函数
PromiseAll
,它接受PromiseLike对象数组,返回值应为Promise<T>
,其中T
是解析的结果数组。测试案例