Skip to content

Commit f0ef4a9

Browse files
committed
Minor cleanup and some related tests
1 parent c4d7e48 commit f0ef4a9

File tree

5 files changed

+562
-8
lines changed

5 files changed

+562
-8
lines changed

src/lib/es5.d.ts

+4-8
Original file line numberDiff line numberDiff line change
@@ -1273,17 +1273,13 @@ declare type PropertyDecorator = (target: Object, propertyKey: string | symbol)
12731273
declare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;
12741274
declare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
12751275

1276-
/** An object type that can be definitely be awaited. Do not inherit from this type. */
1276+
/** An object type that can definitely be awaited. Do not inherit from this type. */
12771277
declare type Awaitable<T> = { then(onfulfilled: (value: T) => any): any; };
12781278

1279-
/** An object type that may not be awaitable. Do not inherit from this type. */
1280-
declare type NonAwaitable = { then(...args: any[]): any; };
1281-
1282-
/** Gets the type resulting from awaiting `T`. This does **not** recursively unwrap nested promises. */
1279+
/** Gets the resulting type from awaiting `T`. This does **not** recursively unwrap nested promises. */
12831280
declare type Awaited<T> =
1284-
T extends Awaitable<Awaitable<infer U>> ? U :
1285-
T extends Awaitable<infer U> ? U :
1286-
T extends NonAwaitable ? never :
1281+
T extends Awaitable<infer U> ? U extends T ? never : U :
1282+
T extends { then(...args: any[]): any; } ? never :
12871283
T;
12881284

12891285
declare type PromiseConstructorLike = new <T>(executor: (resolve: (value?: T | Awaitable<T>) => void, reject: (reason?: any) => void) => void) => PromiseLike<T>;
+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//// [awaitedOfT.ts]
2+
type T1 = Awaited<number>; // number (same as 'await')
3+
type T2 = Awaited<Promise<number>>; // number (same as 'await')
4+
type T3 = Awaited<Promise<Promise<number>>>; // number (same as 'await')
5+
type T4 = Awaited<Promise<Promise<Promise<number>>>>; // number (same as 'await')
6+
type T5 = Awaited<PromiseLike<number>>; // number (same as 'await')
7+
type T6 = Awaited<PromiseLike<PromiseLike<number>>>; // number (same as 'await')
8+
type T7 = Awaited<PromiseLike<PromiseLike<PromiseLike<number>>>>; // number (same as 'await')
9+
type T8 = Awaited<Promise<PromiseLike<number>>>; // number (same as 'await')
10+
type T9 = Awaited<PromiseLike<Promise<number>>>; // number (same as 'await')
11+
type T10 = Awaited<{ then: any; }>; // never (no way to know what this might resolve to, differs from 'await')
12+
type T11 = Awaited<{ then: number; }>; // { then: number; } (same as 'await')
13+
type T12 = Awaited<{ then(): void; }>; // never (no way to know what this might resolve to, error for 'await')
14+
type T13 = Awaited<{ then(x: any): void; }>; // never (no way to know what this might resolve to, error for 'await')
15+
type T14 = Awaited<{ then(x: number): void; }>; // never (cannot be resolved correctly, error for 'await')
16+
type T15 = Awaited<{ then(x: () => void): void; }>; // never (no way to know what this might resolve to)
17+
type T16 = Awaited<{ then(x: (y: any) => void): void; }>; // any (same as 'await')
18+
type T17 = Awaited<{ then(x: (y: number) => void): void; }>; // number (same as 'await')
19+
type T18 = Awaited<{ then(x: (y: { then: any; }) => void): void; }>; // { then: any; } (no recursive unwrap, differs from 'await')
20+
type T19 = Awaited<{ then(x: (y: { then: number; }) => void): void; }>; // { then: number; } (no recursive unwrap, differs from 'await')
21+
type T20 = Awaited<{ then(x: (y: { then(): void; }) => void): void; }>; // { then(): void; } (no recursive unwrap, differs from 'await')
22+
type T21 = Awaited<{ then(x: (y: { then(x: any): void; }) => void): void; }>; // { then(x: any): void; } (no recursive unwrap, differs from 'await')
23+
type T22 = Awaited<{ then(x: (y: { then(x: number): void; }) => void): void; }>; // { then(x: number): void; } (no recursive unwrap, differs from 'await')
24+
type T23 = Awaited<{ then(x: (y: { then(x: () => void): void; }) => void): void; }>; // { then(x: () => void): void; } (no recursive unwrap, differs from 'await')
25+
type T24 = Awaited<{ then(x: (y: { then(x: (y: any) => void): void; }) => void): void; }>; // { then(x: (y: any) => void): void; } (no recursive unwrap, differs from 'await')
26+
type T25 = Awaited<{ then(x: (y: { then(x: (y: number) => void): void; }) => void): void; }>; // { then(x: (y: number) => void): void; } (no recursive unwrap, differs from 'await')
27+
28+
// self recursive bad promise
29+
type T26 = Awaited<BadPromise>; // BadPromise (no recursive unwrap, differs from 'await')
30+
interface BadPromise { then(cb: (value: BadPromise) => void): any; }
31+
32+
// mutually recursive bad promises
33+
type T27 = Awaited<BadPromiseA>; // BadPromiseB (no recursive unwrap, differs from 'await')
34+
interface BadPromiseA { then(cb: (value: BadPromiseB) => void): any; }
35+
interface BadPromiseB { then(cb: (value: BadPromiseA) => void): any; }
36+
37+
type T28 = Awaited<never>; // never (same as 'await')
38+
type T29 = Awaited<number | Promise<string>>; // string | number (same as 'await')
39+
type T30 = Awaited<number | Promise<never>>; // number (same as 'await')
40+
type T31 = Awaited<PromiseLike<number> | Promise<string>>; // string | number (same as 'await')
41+
type T32 = Awaited<Awaited<number>>; // number (same as 'await')
42+
type T33 = Awaited<Promise<Awaited<Promise<number>>>>; // number (same as 'await')
43+
44+
//// [awaitedOfT.js]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
=== tests/cases/compiler/awaitedOfT.ts ===
2+
type T1 = Awaited<number>; // number (same as 'await')
3+
>T1 : Symbol(T1, Decl(awaitedOfT.ts, 0, 0))
4+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
5+
6+
type T2 = Awaited<Promise<number>>; // number (same as 'await')
7+
>T2 : Symbol(T2, Decl(awaitedOfT.ts, 0, 26))
8+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
9+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
10+
11+
type T3 = Awaited<Promise<Promise<number>>>; // number (same as 'await')
12+
>T3 : Symbol(T3, Decl(awaitedOfT.ts, 1, 35))
13+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
14+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
15+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
16+
17+
type T4 = Awaited<Promise<Promise<Promise<number>>>>; // number (same as 'await')
18+
>T4 : Symbol(T4, Decl(awaitedOfT.ts, 2, 44))
19+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
20+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
21+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
22+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
23+
24+
type T5 = Awaited<PromiseLike<number>>; // number (same as 'await')
25+
>T5 : Symbol(T5, Decl(awaitedOfT.ts, 3, 53))
26+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
27+
>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --))
28+
29+
type T6 = Awaited<PromiseLike<PromiseLike<number>>>; // number (same as 'await')
30+
>T6 : Symbol(T6, Decl(awaitedOfT.ts, 4, 39))
31+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
32+
>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --))
33+
>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --))
34+
35+
type T7 = Awaited<PromiseLike<PromiseLike<PromiseLike<number>>>>; // number (same as 'await')
36+
>T7 : Symbol(T7, Decl(awaitedOfT.ts, 5, 52))
37+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
38+
>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --))
39+
>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --))
40+
>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --))
41+
42+
type T8 = Awaited<Promise<PromiseLike<number>>>; // number (same as 'await')
43+
>T8 : Symbol(T8, Decl(awaitedOfT.ts, 6, 65))
44+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
45+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
46+
>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --))
47+
48+
type T9 = Awaited<PromiseLike<Promise<number>>>; // number (same as 'await')
49+
>T9 : Symbol(T9, Decl(awaitedOfT.ts, 7, 48))
50+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
51+
>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --))
52+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
53+
54+
type T10 = Awaited<{ then: any; }>; // never (no way to know what this might resolve to, differs from 'await')
55+
>T10 : Symbol(T10, Decl(awaitedOfT.ts, 8, 48))
56+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
57+
>then : Symbol(then, Decl(awaitedOfT.ts, 9, 20))
58+
59+
type T11 = Awaited<{ then: number; }>; // { then: number; } (same as 'await')
60+
>T11 : Symbol(T11, Decl(awaitedOfT.ts, 9, 35))
61+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
62+
>then : Symbol(then, Decl(awaitedOfT.ts, 10, 20))
63+
64+
type T12 = Awaited<{ then(): void; }>; // never (no way to know what this might resolve to, error for 'await')
65+
>T12 : Symbol(T12, Decl(awaitedOfT.ts, 10, 38))
66+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
67+
>then : Symbol(then, Decl(awaitedOfT.ts, 11, 20))
68+
69+
type T13 = Awaited<{ then(x: any): void; }>; // never (no way to know what this might resolve to, error for 'await')
70+
>T13 : Symbol(T13, Decl(awaitedOfT.ts, 11, 38))
71+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
72+
>then : Symbol(then, Decl(awaitedOfT.ts, 12, 20))
73+
>x : Symbol(x, Decl(awaitedOfT.ts, 12, 26))
74+
75+
type T14 = Awaited<{ then(x: number): void; }>; // never (cannot be resolved correctly, error for 'await')
76+
>T14 : Symbol(T14, Decl(awaitedOfT.ts, 12, 44))
77+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
78+
>then : Symbol(then, Decl(awaitedOfT.ts, 13, 20))
79+
>x : Symbol(x, Decl(awaitedOfT.ts, 13, 26))
80+
81+
type T15 = Awaited<{ then(x: () => void): void; }>; // never (no way to know what this might resolve to)
82+
>T15 : Symbol(T15, Decl(awaitedOfT.ts, 13, 47))
83+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
84+
>then : Symbol(then, Decl(awaitedOfT.ts, 14, 20))
85+
>x : Symbol(x, Decl(awaitedOfT.ts, 14, 26))
86+
87+
type T16 = Awaited<{ then(x: (y: any) => void): void; }>; // any (same as 'await')
88+
>T16 : Symbol(T16, Decl(awaitedOfT.ts, 14, 51))
89+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
90+
>then : Symbol(then, Decl(awaitedOfT.ts, 15, 20))
91+
>x : Symbol(x, Decl(awaitedOfT.ts, 15, 26))
92+
>y : Symbol(y, Decl(awaitedOfT.ts, 15, 30))
93+
94+
type T17 = Awaited<{ then(x: (y: number) => void): void; }>; // number (same as 'await')
95+
>T17 : Symbol(T17, Decl(awaitedOfT.ts, 15, 57))
96+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
97+
>then : Symbol(then, Decl(awaitedOfT.ts, 16, 20))
98+
>x : Symbol(x, Decl(awaitedOfT.ts, 16, 26))
99+
>y : Symbol(y, Decl(awaitedOfT.ts, 16, 30))
100+
101+
type T18 = Awaited<{ then(x: (y: { then: any; }) => void): void; }>; // { then: any; } (no recursive unwrap, differs from 'await')
102+
>T18 : Symbol(T18, Decl(awaitedOfT.ts, 16, 60))
103+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
104+
>then : Symbol(then, Decl(awaitedOfT.ts, 17, 20))
105+
>x : Symbol(x, Decl(awaitedOfT.ts, 17, 26))
106+
>y : Symbol(y, Decl(awaitedOfT.ts, 17, 30))
107+
>then : Symbol(then, Decl(awaitedOfT.ts, 17, 34))
108+
109+
type T19 = Awaited<{ then(x: (y: { then: number; }) => void): void; }>; // { then: number; } (no recursive unwrap, differs from 'await')
110+
>T19 : Symbol(T19, Decl(awaitedOfT.ts, 17, 68))
111+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
112+
>then : Symbol(then, Decl(awaitedOfT.ts, 18, 20))
113+
>x : Symbol(x, Decl(awaitedOfT.ts, 18, 26))
114+
>y : Symbol(y, Decl(awaitedOfT.ts, 18, 30))
115+
>then : Symbol(then, Decl(awaitedOfT.ts, 18, 34))
116+
117+
type T20 = Awaited<{ then(x: (y: { then(): void; }) => void): void; }>; // { then(): void; } (no recursive unwrap, differs from 'await')
118+
>T20 : Symbol(T20, Decl(awaitedOfT.ts, 18, 71))
119+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
120+
>then : Symbol(then, Decl(awaitedOfT.ts, 19, 20))
121+
>x : Symbol(x, Decl(awaitedOfT.ts, 19, 26))
122+
>y : Symbol(y, Decl(awaitedOfT.ts, 19, 30))
123+
>then : Symbol(then, Decl(awaitedOfT.ts, 19, 34))
124+
125+
type T21 = Awaited<{ then(x: (y: { then(x: any): void; }) => void): void; }>; // { then(x: any): void; } (no recursive unwrap, differs from 'await')
126+
>T21 : Symbol(T21, Decl(awaitedOfT.ts, 19, 71))
127+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
128+
>then : Symbol(then, Decl(awaitedOfT.ts, 20, 20))
129+
>x : Symbol(x, Decl(awaitedOfT.ts, 20, 26))
130+
>y : Symbol(y, Decl(awaitedOfT.ts, 20, 30))
131+
>then : Symbol(then, Decl(awaitedOfT.ts, 20, 34))
132+
>x : Symbol(x, Decl(awaitedOfT.ts, 20, 40))
133+
134+
type T22 = Awaited<{ then(x: (y: { then(x: number): void; }) => void): void; }>; // { then(x: number): void; } (no recursive unwrap, differs from 'await')
135+
>T22 : Symbol(T22, Decl(awaitedOfT.ts, 20, 77))
136+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
137+
>then : Symbol(then, Decl(awaitedOfT.ts, 21, 20))
138+
>x : Symbol(x, Decl(awaitedOfT.ts, 21, 26))
139+
>y : Symbol(y, Decl(awaitedOfT.ts, 21, 30))
140+
>then : Symbol(then, Decl(awaitedOfT.ts, 21, 34))
141+
>x : Symbol(x, Decl(awaitedOfT.ts, 21, 40))
142+
143+
type T23 = Awaited<{ then(x: (y: { then(x: () => void): void; }) => void): void; }>; // { then(x: () => void): void; } (no recursive unwrap, differs from 'await')
144+
>T23 : Symbol(T23, Decl(awaitedOfT.ts, 21, 80))
145+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
146+
>then : Symbol(then, Decl(awaitedOfT.ts, 22, 20))
147+
>x : Symbol(x, Decl(awaitedOfT.ts, 22, 26))
148+
>y : Symbol(y, Decl(awaitedOfT.ts, 22, 30))
149+
>then : Symbol(then, Decl(awaitedOfT.ts, 22, 34))
150+
>x : Symbol(x, Decl(awaitedOfT.ts, 22, 40))
151+
152+
type T24 = Awaited<{ then(x: (y: { then(x: (y: any) => void): void; }) => void): void; }>; // { then(x: (y: any) => void): void; } (no recursive unwrap, differs from 'await')
153+
>T24 : Symbol(T24, Decl(awaitedOfT.ts, 22, 84))
154+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
155+
>then : Symbol(then, Decl(awaitedOfT.ts, 23, 20))
156+
>x : Symbol(x, Decl(awaitedOfT.ts, 23, 26))
157+
>y : Symbol(y, Decl(awaitedOfT.ts, 23, 30))
158+
>then : Symbol(then, Decl(awaitedOfT.ts, 23, 34))
159+
>x : Symbol(x, Decl(awaitedOfT.ts, 23, 40))
160+
>y : Symbol(y, Decl(awaitedOfT.ts, 23, 44))
161+
162+
type T25 = Awaited<{ then(x: (y: { then(x: (y: number) => void): void; }) => void): void; }>; // { then(x: (y: number) => void): void; } (no recursive unwrap, differs from 'await')
163+
>T25 : Symbol(T25, Decl(awaitedOfT.ts, 23, 90))
164+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
165+
>then : Symbol(then, Decl(awaitedOfT.ts, 24, 20))
166+
>x : Symbol(x, Decl(awaitedOfT.ts, 24, 26))
167+
>y : Symbol(y, Decl(awaitedOfT.ts, 24, 30))
168+
>then : Symbol(then, Decl(awaitedOfT.ts, 24, 34))
169+
>x : Symbol(x, Decl(awaitedOfT.ts, 24, 40))
170+
>y : Symbol(y, Decl(awaitedOfT.ts, 24, 44))
171+
172+
// self recursive bad promise
173+
type T26 = Awaited<BadPromise>; // BadPromise (no recursive unwrap, differs from 'await')
174+
>T26 : Symbol(T26, Decl(awaitedOfT.ts, 24, 93))
175+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
176+
>BadPromise : Symbol(BadPromise, Decl(awaitedOfT.ts, 27, 31))
177+
178+
interface BadPromise { then(cb: (value: BadPromise) => void): any; }
179+
>BadPromise : Symbol(BadPromise, Decl(awaitedOfT.ts, 27, 31))
180+
>then : Symbol(BadPromise.then, Decl(awaitedOfT.ts, 28, 22))
181+
>cb : Symbol(cb, Decl(awaitedOfT.ts, 28, 28))
182+
>value : Symbol(value, Decl(awaitedOfT.ts, 28, 33))
183+
>BadPromise : Symbol(BadPromise, Decl(awaitedOfT.ts, 27, 31))
184+
185+
// mutually recursive bad promises
186+
type T27 = Awaited<BadPromiseA>; // BadPromiseB (no recursive unwrap, differs from 'await')
187+
>T27 : Symbol(T27, Decl(awaitedOfT.ts, 28, 68))
188+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
189+
>BadPromiseA : Symbol(BadPromiseA, Decl(awaitedOfT.ts, 31, 32))
190+
191+
interface BadPromiseA { then(cb: (value: BadPromiseB) => void): any; }
192+
>BadPromiseA : Symbol(BadPromiseA, Decl(awaitedOfT.ts, 31, 32))
193+
>then : Symbol(BadPromiseA.then, Decl(awaitedOfT.ts, 32, 23))
194+
>cb : Symbol(cb, Decl(awaitedOfT.ts, 32, 29))
195+
>value : Symbol(value, Decl(awaitedOfT.ts, 32, 34))
196+
>BadPromiseB : Symbol(BadPromiseB, Decl(awaitedOfT.ts, 32, 70))
197+
198+
interface BadPromiseB { then(cb: (value: BadPromiseA) => void): any; }
199+
>BadPromiseB : Symbol(BadPromiseB, Decl(awaitedOfT.ts, 32, 70))
200+
>then : Symbol(BadPromiseB.then, Decl(awaitedOfT.ts, 33, 23))
201+
>cb : Symbol(cb, Decl(awaitedOfT.ts, 33, 29))
202+
>value : Symbol(value, Decl(awaitedOfT.ts, 33, 34))
203+
>BadPromiseA : Symbol(BadPromiseA, Decl(awaitedOfT.ts, 31, 32))
204+
205+
type T28 = Awaited<never>; // never (same as 'await')
206+
>T28 : Symbol(T28, Decl(awaitedOfT.ts, 33, 70))
207+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
208+
209+
type T29 = Awaited<number | Promise<string>>; // string | number (same as 'await')
210+
>T29 : Symbol(T29, Decl(awaitedOfT.ts, 35, 26))
211+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
212+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
213+
214+
type T30 = Awaited<number | Promise<never>>; // number (same as 'await')
215+
>T30 : Symbol(T30, Decl(awaitedOfT.ts, 36, 45))
216+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
217+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
218+
219+
type T31 = Awaited<PromiseLike<number> | Promise<string>>; // string | number (same as 'await')
220+
>T31 : Symbol(T31, Decl(awaitedOfT.ts, 37, 44))
221+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
222+
>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --))
223+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
224+
225+
type T32 = Awaited<Awaited<number>>; // number (same as 'await')
226+
>T32 : Symbol(T32, Decl(awaitedOfT.ts, 38, 58))
227+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
228+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
229+
230+
type T33 = Awaited<Promise<Awaited<Promise<number>>>>; // number (same as 'await')
231+
>T33 : Symbol(T33, Decl(awaitedOfT.ts, 39, 36))
232+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
233+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
234+
>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --))
235+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
236+

0 commit comments

Comments
 (0)