Skip to content

Commit aef29e4

Browse files
authored
Add types for Promise.withResolvers() (#56593)
1 parent 2869579 commit aef29e4

19 files changed

+164
-4
lines changed

src/compiler/commandLineParser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ const libEntries: [string, string][] = [
221221
["esnext.disposable", "lib.esnext.disposable.d.ts"],
222222
["esnext.bigint", "lib.es2020.bigint.d.ts"],
223223
["esnext.string", "lib.es2022.string.d.ts"],
224-
["esnext.promise", "lib.es2021.promise.d.ts"],
224+
["esnext.promise", "lib.esnext.promise.d.ts"],
225225
["esnext.weakref", "lib.es2021.weakref.d.ts"],
226226
["esnext.decorators", "lib.esnext.decorators.d.ts"],
227227
["decorators", "lib.decorators.d.ts"],

src/lib/esnext.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
/// <reference lib="esnext.intl" />
33
/// <reference lib="esnext.decorators" />
44
/// <reference lib="esnext.disposable" />
5+
/// <reference lib="esnext.promise" />

src/lib/esnext.promise.d.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
interface PromiseWithResolvers<T> {
2+
promise: Promise<T>;
3+
resolve: (value: T | PromiseLike<T>) => void;
4+
reject: (reason?: any) => void;
5+
}
6+
7+
interface PromiseConstructor {
8+
/**
9+
* Creates a new Promise and returns it in an object, along with its resolve and reject functions.
10+
* @returns An object with the properties `promise`, `resolve`, and `reject`.
11+
*
12+
* ```ts
13+
* const { promise, resolve, reject } = Promise.withResolvers<T>();
14+
* ```
15+
*/
16+
withResolvers<T>(): PromiseWithResolvers<T>;
17+
}

src/lib/libs.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
"esnext.decorators",
7272
"esnext.intl",
7373
"esnext.disposable",
74+
"esnext.promise",
7475
"decorators",
7576
"decorators.legacy",
7677
// Default libraries
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//// [tests/cases/compiler/promiseWithResolvers.ts] ////
2+
3+
//// [promiseWithResolvers.ts]
4+
type T = {};
5+
const { promise, resolve, reject } = Promise.withResolvers<T>();
6+
7+
8+
//// [promiseWithResolvers.js]
9+
const { promise, resolve, reject } = Promise.withResolvers();
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//// [tests/cases/compiler/promiseWithResolvers.ts] ////
2+
3+
=== promiseWithResolvers.ts ===
4+
type T = {};
5+
>T : Symbol(T, Decl(promiseWithResolvers.ts, 0, 0))
6+
7+
const { promise, resolve, reject } = Promise.withResolvers<T>();
8+
>promise : Symbol(promise, Decl(promiseWithResolvers.ts, 1, 7))
9+
>resolve : Symbol(resolve, Decl(promiseWithResolvers.ts, 1, 16))
10+
>reject : Symbol(reject, Decl(promiseWithResolvers.ts, 1, 25))
11+
>Promise.withResolvers : Symbol(PromiseConstructor.withResolvers, Decl(lib.esnext.promise.d.ts, --, --))
12+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2018.promise.d.ts, --, --))
13+
>withResolvers : Symbol(PromiseConstructor.withResolvers, Decl(lib.esnext.promise.d.ts, --, --))
14+
>T : Symbol(T, Decl(promiseWithResolvers.ts, 0, 0))
15+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//// [tests/cases/compiler/promiseWithResolvers.ts] ////
2+
3+
=== promiseWithResolvers.ts ===
4+
type T = {};
5+
>T : {}
6+
7+
const { promise, resolve, reject } = Promise.withResolvers<T>();
8+
>promise : Promise<T>
9+
>resolve : (value: T | PromiseLike<T>) => void
10+
>reject : (reason?: any) => void
11+
>Promise.withResolvers<T>() : PromiseWithResolvers<T>
12+
>Promise.withResolvers : <T>() => PromiseWithResolvers<T>
13+
>Promise : PromiseConstructor
14+
>withResolvers : <T>() => PromiseWithResolvers<T>
15+

tests/baselines/reference/tsc/runWithoutArgs/does-not-add-color-when-NO_COLOR-is-set.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ default: undefined
111111

112112
--lib
113113
Specify a set of bundled library declaration files that describe the target runtime environment.
114-
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.decorators, decorators, decorators.legacy
114+
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.promise, esnext.decorators, decorators, decorators.legacy
115115
default: undefined
116116

117117
--allowJs

tests/baselines/reference/tsc/runWithoutArgs/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped-when-host-can't-provide-terminal-width.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ default: undefined
111111

112112
--lib
113113
Specify a set of bundled library declaration files that describe the target runtime environment.
114-
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.decorators, decorators, decorators.legacy
114+
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.promise, esnext.decorators, decorators, decorators.legacy
115115
default: undefined
116116

117117
--allowJs

tests/baselines/reference/tsc/runWithoutArgs/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ default: undefined
111111

112112
--lib
113113
Specify a set of bundled library declaration files that describe the target runtime environment.
114-
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.decorators, decorators, decorators.legacy
114+
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.promise, esnext.decorators, decorators, decorators.legacy
115115
default: undefined
116116

117117
--allowJs

0 commit comments

Comments
 (0)