forked from microsoft/TypeScript
/
correctOrderOfPromiseMethod.types
72 lines (59 loc) · 7.86 KB
/
correctOrderOfPromiseMethod.types
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
=== tests/cases/compiler/correctOrderOfPromiseMethod.ts ===
interface A {
id: string
>id : string
}
interface B {
id: string
>id : string
fieldB: string
>fieldB : string
}
async function countEverything(): Promise<number> {
>countEverything : () => Promise<number>
const providerA = async (): Promise<A[]> => { return [] }
>providerA : () => Promise<A[]>
>async (): Promise<A[]> => { return [] } : () => Promise<A[]>
>[] : undefined[]
const providerB = async (): Promise<B[]> => { return [] }
>providerB : () => Promise<B[]>
>async (): Promise<B[]> => { return [] } : () => Promise<B[]>
>[] : undefined[]
const [resultA, resultB] = await Promise.all([
>resultA : A[]
>resultB : B[]
>await Promise.all([ providerA(), providerB(), ]) : [A[], B[]]
>Promise.all([ providerA(), providerB(), ]) : Promise<[A[], B[]]>
>Promise.all : { <TAll>(values: Iterable<TAll>): Promise<(TAll extends PromiseLike<infer UAll> ? UAll : TAll)[]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5, T6 extends PromiseLike<infer U6> ? U6 : T6, T7 extends PromiseLike<infer U7> ? U7 : T7, T8 extends PromiseLike<infer U8> ? U8 : T8, T9 extends PromiseLike<infer U9> ? U9 : T9, T10 extends PromiseLike<infer U10> ? U10 : T10]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5, T6 extends PromiseLike<infer U6> ? U6 : T6, T7 extends PromiseLike<infer U7> ? U7 : T7, T8 extends PromiseLike<infer U8> ? U8 : T8, T9 extends PromiseLike<infer U9> ? U9 : T9]>; <T1, T2, T3, T4, T5, T6, T7, T8>(values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5, T6 extends PromiseLike<infer U6> ? U6 : T6, T7 extends PromiseLike<infer U7> ? U7 : T7, T8 extends PromiseLike<infer U8> ? U8 : T8]>; <T1, T2, T3, T4, T5, T6, T7>(values: [T1, T2, T3, T4, T5, T6, T7]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5, T6 extends PromiseLike<infer U6> ? U6 : T6, T7 extends PromiseLike<infer U7> ? U7 : T7]>; <T1, T2, T3, T4, T5, T6>(values: [T1, T2, T3, T4, T5, T6]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5, T6 extends PromiseLike<infer U6> ? U6 : T6]>; <T1, T2, T3, T4, T5>(values: [T1, T2, T3, T4, T5]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5]>; <T1, T2, T3, T4>(values: [T1, T2, T3, T4]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4]>; <T1, T2, T3>(values: [T1, T2, T3]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3]>; <T1, T2>(values: [T1, T2]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2]>; <T>(values: T[]): Promise<(T extends PromiseLike<infer U> ? U : T)[]>; }
>Promise : PromiseConstructor
>all : { <TAll>(values: Iterable<TAll>): Promise<(TAll extends PromiseLike<infer UAll> ? UAll : TAll)[]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5, T6 extends PromiseLike<infer U6> ? U6 : T6, T7 extends PromiseLike<infer U7> ? U7 : T7, T8 extends PromiseLike<infer U8> ? U8 : T8, T9 extends PromiseLike<infer U9> ? U9 : T9, T10 extends PromiseLike<infer U10> ? U10 : T10]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5, T6 extends PromiseLike<infer U6> ? U6 : T6, T7 extends PromiseLike<infer U7> ? U7 : T7, T8 extends PromiseLike<infer U8> ? U8 : T8, T9 extends PromiseLike<infer U9> ? U9 : T9]>; <T1, T2, T3, T4, T5, T6, T7, T8>(values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5, T6 extends PromiseLike<infer U6> ? U6 : T6, T7 extends PromiseLike<infer U7> ? U7 : T7, T8 extends PromiseLike<infer U8> ? U8 : T8]>; <T1, T2, T3, T4, T5, T6, T7>(values: [T1, T2, T3, T4, T5, T6, T7]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5, T6 extends PromiseLike<infer U6> ? U6 : T6, T7 extends PromiseLike<infer U7> ? U7 : T7]>; <T1, T2, T3, T4, T5, T6>(values: [T1, T2, T3, T4, T5, T6]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5, T6 extends PromiseLike<infer U6> ? U6 : T6]>; <T1, T2, T3, T4, T5>(values: [T1, T2, T3, T4, T5]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4, T5 extends PromiseLike<infer U5> ? U5 : T5]>; <T1, T2, T3, T4>(values: [T1, T2, T3, T4]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3, T4 extends PromiseLike<infer U4> ? U4 : T4]>; <T1, T2, T3>(values: [T1, T2, T3]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2, T3 extends PromiseLike<infer U3> ? U3 : T3]>; <T1, T2>(values: [T1, T2]): Promise<[T1 extends PromiseLike<infer U1> ? U1 : T1, T2 extends PromiseLike<infer U2> ? U2 : T2]>; <T>(values: T[]): Promise<(T extends PromiseLike<infer U> ? U : T)[]>; }
>[ providerA(), providerB(), ] : [Promise<A[]>, Promise<B[]>]
providerA(),
>providerA() : Promise<A[]>
>providerA : () => Promise<A[]>
providerB(),
>providerB() : Promise<B[]>
>providerB : () => Promise<B[]>
]);
const dataA: A[] = resultA;
>dataA : A[]
>resultA : A[]
const dataB: B[] = resultB;
>dataB : B[]
>resultB : B[]
if (dataA && dataB) {
>dataA && dataB : B[]
>dataA : A[]
>dataB : B[]
return dataA.length + dataB.length;
>dataA.length + dataB.length : number
>dataA.length : number
>dataA : A[]
>length : number
>dataB.length : number
>dataB : B[]
>length : number
}
return 0;
>0 : 0
}