From 74c5c63a49a369420d9c84a29382a335ac67d54a Mon Sep 17 00:00:00 2001 From: Jack Bates Date: Fri, 23 Aug 2019 12:35:52 -0700 Subject: [PATCH] Better typings for Promise.all(), like #31117 --- src/lib/es2015.iterable.d.ts | 2 +- src/lib/es2015.promise.d.ts | 20 ++++++++-------- .../correctOrderOfPromiseMethod.types | 4 ++-- ...inferFromGenericFunctionReturnTypes3.types | 4 ++-- .../baselines/reference/inferenceLimit.types | 4 ++-- .../initial-build/resolves-correctly.js | 24 +++++++++---------- 6 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/lib/es2015.iterable.d.ts b/src/lib/es2015.iterable.d.ts index c5c39f3570178..ccac12fb1e4d7 100644 --- a/src/lib/es2015.iterable.d.ts +++ b/src/lib/es2015.iterable.d.ts @@ -203,7 +203,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: Iterable>): Promise; + all(values: Iterable): Promise<(TAll extends PromiseLike ? UAll : TAll)[]>; } declare namespace Reflect { diff --git a/src/lib/es2015.promise.d.ts b/src/lib/es2015.promise.d.ts index 83776137c33c1..55063b4267fda 100644 --- a/src/lib/es2015.promise.d.ts +++ b/src/lib/es2015.promise.d.ts @@ -18,7 +18,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + all(values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9, T10 extends PromiseLike ? U10 : T10]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -26,7 +26,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + all(values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -34,7 +34,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + all(values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -42,7 +42,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + all(values: [T1, T2, T3, T4, T5, T6, T7]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -50,7 +50,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; + all(values: [T1, T2, T3, T4, T5, T6]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -58,7 +58,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; + all(values: [T1, T2, T3, T4, T5]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -66,7 +66,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; + all(values: [T1, T2, T3, T4]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -74,7 +74,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; + all(values: [T1, T2, T3]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -82,7 +82,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; + all(values: [T1, T2]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -90,7 +90,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: (T | PromiseLike)[]): Promise; + all(values: T[]): Promise<(T extends PromiseLike ? U : T)[]>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved diff --git a/tests/baselines/reference/correctOrderOfPromiseMethod.types b/tests/baselines/reference/correctOrderOfPromiseMethod.types index 5e8eaa72f429b..906e0b9738302 100644 --- a/tests/baselines/reference/correctOrderOfPromiseMethod.types +++ b/tests/baselines/reference/correctOrderOfPromiseMethod.types @@ -30,9 +30,9 @@ async function countEverything(): Promise { >resultB : B[] >await Promise.all([ providerA(), providerB(), ]) : [A[], B[]] >Promise.all([ providerA(), providerB(), ]) : Promise<[A[], B[]]> ->Promise.all : { (values: Iterable>): Promise; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike]): Promise<[T1, T2, T3, T4]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; (values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; (values: (T | PromiseLike)[]): Promise; } +>Promise.all : { (values: Iterable): Promise<(TAll extends PromiseLike ? UAll : TAll)[]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9, T10 extends PromiseLike ? U10 : T10]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8]>; (values: [T1, T2, T3, T4, T5, T6, T7]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7]>; (values: [T1, T2, T3, T4, T5, T6]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6]>; (values: [T1, T2, T3, T4, T5]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5]>; (values: [T1, T2, T3, T4]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4]>; (values: [T1, T2, T3]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3]>; (values: [T1, T2]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2]>; (values: T[]): Promise<(T extends PromiseLike ? U : T)[]>; } >Promise : PromiseConstructor ->all : { (values: Iterable>): Promise; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike]): Promise<[T1, T2, T3, T4]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; (values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; (values: (T | PromiseLike)[]): Promise; } +>all : { (values: Iterable): Promise<(TAll extends PromiseLike ? UAll : TAll)[]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9, T10 extends PromiseLike ? U10 : T10]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8]>; (values: [T1, T2, T3, T4, T5, T6, T7]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7]>; (values: [T1, T2, T3, T4, T5, T6]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6]>; (values: [T1, T2, T3, T4, T5]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5]>; (values: [T1, T2, T3, T4]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4]>; (values: [T1, T2, T3]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3]>; (values: [T1, T2]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2]>; (values: T[]): Promise<(T extends PromiseLike ? U : T)[]>; } >[ providerA(), providerB(), ] : [Promise, Promise] providerA(), diff --git a/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types b/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types index 4c56070fd3cba..5ec11d91a2caa 100644 --- a/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types +++ b/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types @@ -413,9 +413,9 @@ const f1: F = () => { return Promise.all([ >Promise.all([ { name: "David Gomes", age: 23, position: "GOALKEEPER", }, { name: "Cristiano Ronaldo", age: 33, position: "STRIKER", } ]) : Promise<[{ name: string; age: number; position: "GOALKEEPER"; }, { name: string; age: number; position: "STRIKER"; }]> ->Promise.all : { (values: Iterable>): Promise; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike]): Promise<[T1, T2, T3, T4]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; (values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; (values: (T | PromiseLike)[]): Promise; } +>Promise.all : { (values: Iterable): Promise<(TAll extends PromiseLike ? UAll : TAll)[]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9, T10 extends PromiseLike ? U10 : T10]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8]>; (values: [T1, T2, T3, T4, T5, T6, T7]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7]>; (values: [T1, T2, T3, T4, T5, T6]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6]>; (values: [T1, T2, T3, T4, T5]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5]>; (values: [T1, T2, T3, T4]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4]>; (values: [T1, T2, T3]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3]>; (values: [T1, T2]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2]>; (values: T[]): Promise<(T extends PromiseLike ? U : T)[]>; } >Promise : PromiseConstructor ->all : { (values: Iterable>): Promise; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike]): Promise<[T1, T2, T3, T4]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; (values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; (values: (T | PromiseLike)[]): Promise; } +>all : { (values: Iterable): Promise<(TAll extends PromiseLike ? UAll : TAll)[]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9, T10 extends PromiseLike ? U10 : T10]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8]>; (values: [T1, T2, T3, T4, T5, T6, T7]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7]>; (values: [T1, T2, T3, T4, T5, T6]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6]>; (values: [T1, T2, T3, T4, T5]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5]>; (values: [T1, T2, T3, T4]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4]>; (values: [T1, T2, T3]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3]>; (values: [T1, T2]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2]>; (values: T[]): Promise<(T extends PromiseLike ? U : T)[]>; } >[ { name: "David Gomes", age: 23, position: "GOALKEEPER", }, { name: "Cristiano Ronaldo", age: 33, position: "STRIKER", } ] : [{ name: string; age: number; position: "GOALKEEPER"; }, { name: string; age: number; position: "STRIKER"; }] { >{ name: "David Gomes", age: 23, position: "GOALKEEPER", } : { name: string; age: number; position: "GOALKEEPER"; } diff --git a/tests/baselines/reference/inferenceLimit.types b/tests/baselines/reference/inferenceLimit.types index 6aa7ab501ea16..92b94a08cb2f0 100644 --- a/tests/baselines/reference/inferenceLimit.types +++ b/tests/baselines/reference/inferenceLimit.types @@ -76,9 +76,9 @@ export class BrokenClass { >Promise.all(result.map(populateItems)) .then((orders: Array) => { resolve(orders); }) : Promise >Promise.all(result.map(populateItems)) .then : (onfulfilled?: (value: unknown[]) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise >Promise.all(result.map(populateItems)) : Promise ->Promise.all : { (values: Iterable>): Promise; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike]): Promise<[T1, T2, T3, T4]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; (values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; (values: (T | PromiseLike)[]): Promise; } +>Promise.all : { (values: Iterable): Promise<(TAll extends PromiseLike ? UAll : TAll)[]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9, T10 extends PromiseLike ? U10 : T10]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8]>; (values: [T1, T2, T3, T4, T5, T6, T7]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7]>; (values: [T1, T2, T3, T4, T5, T6]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6]>; (values: [T1, T2, T3, T4, T5]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5]>; (values: [T1, T2, T3, T4]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4]>; (values: [T1, T2, T3]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3]>; (values: [T1, T2]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2]>; (values: T[]): Promise<(T extends PromiseLike ? U : T)[]>; } >Promise : PromiseConstructor ->all : { (values: Iterable>): Promise; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike]): Promise<[T1, T2, T3, T4]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; (values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; (values: (T | PromiseLike)[]): Promise; } +>all : { (values: Iterable): Promise<(TAll extends PromiseLike ? UAll : TAll)[]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9, T10 extends PromiseLike ? U10 : T10]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8, T9 extends PromiseLike ? U9 : T9]>; (values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7, T8 extends PromiseLike ? U8 : T8]>; (values: [T1, T2, T3, T4, T5, T6, T7]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6, T7 extends PromiseLike ? U7 : T7]>; (values: [T1, T2, T3, T4, T5, T6]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5, T6 extends PromiseLike ? U6 : T6]>; (values: [T1, T2, T3, T4, T5]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4, T5 extends PromiseLike ? U5 : T5]>; (values: [T1, T2, T3, T4]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3, T4 extends PromiseLike ? U4 : T4]>; (values: [T1, T2, T3]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2, T3 extends PromiseLike ? U3 : T3]>; (values: [T1, T2]): Promise<[T1 extends PromiseLike ? U1 : T1, T2 extends PromiseLike ? U2 : T2]>; (values: T[]): Promise<(T extends PromiseLike ? U : T)[]>; } >result.map(populateItems) : Promise[] >result.map : (callbackfn: (value: MyModule.MyModel, index: number, array: MyModule.MyModel[]) => U, thisArg?: any) => U[] >result : MyModule.MyModel[] diff --git a/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/resolves-correctly.js b/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/resolves-correctly.js index 274ec9c06b1cb..57823de2f0699 100644 --- a/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/resolves-correctly.js +++ b/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/resolves-correctly.js @@ -38,12 +38,12 @@ exports.__esModule = true; "signature": "10837180865" }, "../../../.ts/lib.es2015.iterable.d.ts": { - "version": "183764445096", - "signature": "183764445096" + "version": "-99778774879", + "signature": "-99778774879" }, "../../../.ts/lib.es2015.promise.d.ts": { - "version": "235321148269", - "signature": "235321148269" + "version": "15665797355", + "signature": "15665797355" }, "../../../.ts/lib.es2015.proxy.d.ts": { "version": "55479865087", @@ -138,12 +138,12 @@ exports.__esModule = true; "signature": "10837180865" }, "../../../.ts/lib.es2015.iterable.d.ts": { - "version": "183764445096", - "signature": "183764445096" + "version": "-99778774879", + "signature": "-99778774879" }, "../../../.ts/lib.es2015.promise.d.ts": { - "version": "235321148269", - "signature": "235321148269" + "version": "15665797355", + "signature": "15665797355" }, "../../../.ts/lib.es2015.proxy.d.ts": { "version": "55479865087", @@ -261,12 +261,12 @@ exports.getVar = getVar; "signature": "10837180865" }, "../../../.ts/lib.es2015.iterable.d.ts": { - "version": "183764445096", - "signature": "183764445096" + "version": "-99778774879", + "signature": "-99778774879" }, "../../../.ts/lib.es2015.promise.d.ts": { - "version": "235321148269", - "signature": "235321148269" + "version": "15665797355", + "signature": "15665797355" }, "../../../.ts/lib.es2015.proxy.d.ts": { "version": "55479865087",