Skip to content

Commit 1642d2a

Browse files
committed
✨ Add better type definitions for promises
1 parent 732ece6 commit 1642d2a

16 files changed

+408
-180
lines changed

docs/diff.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ The following files are improved in better-typescript-lib:
1616
- [es2017.object.d.ts](./diff/es2017.object.d.ts.md)
1717
- [es2018.asyncgenerator.d.ts](./diff/es2018.asyncgenerator.d.ts.md)
1818
- [es2018.asynciterable.d.ts](./diff/es2018.asynciterable.d.ts.md)
19+
- [es2018.promise.d.ts](./diff/es2018.promise.d.ts.md)
1920
- [es2019.object.d.ts](./diff/es2019.object.d.ts.md)
2021
- [es2020.bigint.d.ts](./diff/es2020.bigint.d.ts.md)
22+
- [es2020.promise.d.ts](./diff/es2020.promise.d.ts.md)
2123
- [es2021.string.d.ts](./diff/es2021.string.d.ts.md)
2224
- [es2021.promise.d.ts](./diff/es2021.promise.d.ts.md)
2325
- [es2022.object.d.ts](./diff/es2022.object.d.ts.md)

docs/diff/es2015.promise.d.ts.md

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Index: es2015.promise.d.ts
55
===================================================================
66
--- es2015.promise.d.ts
77
+++ es2015.promise.d.ts
8-
@@ -1,19 +1,32 @@
8+
@@ -1,19 +1,20 @@
99
interface PromiseConstructor {
1010
/**
1111
* A reference to the prototype.
@@ -23,20 +23,8 @@ Index: es2015.promise.d.ts
2323
executor: (
2424
- resolve: (value: T | PromiseLike<T>) => void,
2525
+ resolve: undefined extends T
26-
+ ? {
27-
+ (value?: T | PromiseLike<T>): void;
28-
+ }
29-
+ : {
30-
+ (value: T | PromiseLike<T>): void;
31-
+ },
32-
+ // TODO: Revisit after https://github.com/microsoft/TypeScript/issues/42156 solves
33-
+ // {
34-
+ // (value: T | PromiseLike<T>): void;
35-
+ // } & (undefined extends T
36-
+ // ? {
37-
+ // (value?: T | PromiseLike<T>): void;
38-
+ // }
39-
+ // : {}),
26+
+ ? (value?: T | PromiseLike<T>) => void
27+
+ : (value: T | PromiseLike<T>) => void,
4028
reject: (reason?: any) => void
4129
) => void
4230
): Promise<T>;

docs/diff/es2018.promise.d.ts.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# es2018.promise.d.ts Diffs
2+
3+
```diff
4+
Index: es2018.promise.d.ts
5+
===================================================================
6+
--- es2018.promise.d.ts
7+
+++ es2018.promise.d.ts
8+
@@ -7,6 +7,8 @@
9+
* resolved value cannot be modified from the callback.
10+
* @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
11+
* @returns A Promise for the completion of the callback.
12+
*/
13+
- finally(onfinally?: (() => void) | undefined | null): Promise<T>;
14+
+ finally<U>(
15+
+ onfinally?: (() => U | PromiseLike<U>) | null | undefined
16+
+ ): Promise<T>;
17+
}
18+
19+
```

docs/diff/es2020.promise.d.ts.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# es2020.promise.d.ts Diffs
2+
3+
```diff
4+
Index: es2020.promise.d.ts
5+
===================================================================
6+
--- es2020.promise.d.ts
7+
+++ es2020.promise.d.ts
8+
@@ -4,9 +4,9 @@
9+
}
10+
11+
interface PromiseRejectedResult {
12+
status: "rejected";
13+
- reason: any;
14+
+ reason: unknown;
15+
}
16+
17+
type PromiseSettledResult<T> =
18+
| PromiseFulfilledResult<T>
19+
@@ -20,16 +20,18 @@
20+
* @returns A new Promise.
21+
*/
22+
allSettled<T extends readonly unknown[] | []>(
23+
values: T
24+
- ): Promise<{ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>> }>;
25+
+ ): Promise<{
26+
+ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>>;
27+
+ }>;
28+
29+
/**
30+
* Creates a Promise that is resolved with an array of results when all
31+
* of the provided Promises resolve or reject.
32+
* @param values An array of Promises.
33+
* @returns A new Promise.
34+
*/
35+
allSettled<T>(
36+
- values: Iterable<T | PromiseLike<T>>
37+
+ values: Iterable<T>
38+
): Promise<PromiseSettledResult<Awaited<T>>[]>;
39+
}
40+
41+
```

docs/diff/es2021.promise.d.ts.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,13 @@ Index: es2021.promise.d.ts
1313

1414
interface AggregateErrorConstructor {
1515
new (errors: Iterable<any>, message?: string): AggregateError;
16+
@@ -27,6 +27,6 @@
17+
* The any function returns a promise that is fulfilled by the first given promise to be fulfilled, or rejected with an AggregateError containing an array of rejection reasons if all of the given promises are rejected. It resolves all elements of the passed iterable to promises as it runs this algorithm.
18+
* @param values An array or iterable of Promises.
19+
* @returns A new Promise.
20+
*/
21+
- any<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>;
22+
+ any<T>(values: Iterable<T>): Promise<Awaited<T>>;
23+
}
1624

1725
```

0 commit comments

Comments
 (0)