Inline 'Awaitable' into 'Awaited'

This commit is contained in:
Ron Buckton 2018-02-04 19:48:12 -08:00
parent 0bf0bf6f53
commit 76ee13974c
9 changed files with 24 additions and 27 deletions

View file

@ -10,7 +10,7 @@ interface PromiseConstructor {
* a resolve callback used resolve the promise with a value or the result of another promise,
* and a reject callback used to reject the promise with a provided reason or error.
*/
new <T>(executor: (resolve: (value?: T | Awaitable<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;
new <T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises

7
src/lib/es5.d.ts vendored
View file

@ -1273,16 +1273,13 @@ declare type PropertyDecorator = (target: Object, propertyKey: string | symbol)
declare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;
declare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
/** An object type that can definitely be awaited. Do not inherit from this type. */
declare type Awaitable<T> = { then(onfulfilled: (value: T) => any): any; };
/** Gets the resulting type from awaiting `T`. This does **not** recursively unwrap nested promises. */
declare type Awaited<T> =
T extends Awaitable<infer U> ? U :
T extends { then(onfulfilled: (value: infer U) => any): any; } ? U :
T extends { then(...args: any[]): any; } ? never :
T;
declare type PromiseConstructorLike = new <T>(executor: (resolve: (value?: T | Awaitable<T>) => void, reject: (reason?: any) => void) => void) => PromiseLike<T>;
declare type PromiseConstructorLike = new <T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void) => PromiseLike<T>;
interface PromiseLike<T> {
/**

View file

@ -15,10 +15,10 @@ class A {
return new Promise((resolve) => { resolve(null); });
>new Promise((resolve) => { resolve(null); }) : Promise<void>
>Promise : PromiseConstructor
>(resolve) => { resolve(null); } : (resolve: (value?: void | Awaitable<void>) => void) => void
>resolve : (value?: void | Awaitable<void>) => void
>(resolve) => { resolve(null); } : (resolve: (value?: void | PromiseLike<void>) => void) => void
>resolve : (value?: void | PromiseLike<void>) => void
>resolve(null) : void
>resolve : (value?: void | Awaitable<void>) => void
>resolve : (value?: void | PromiseLike<void>) => void
>null : null
}
static C = class C {

View file

@ -3,11 +3,11 @@ const x = new Promise( ( resolve, reject ) => { resolve( {} ); } );
>x : Promise<{}>
>new Promise( ( resolve, reject ) => { resolve( {} ); } ) : Promise<{}>
>Promise : PromiseConstructor
>( resolve, reject ) => { resolve( {} ); } : (resolve: (value?: {} | Awaitable<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | Awaitable<{}>) => void
>( resolve, reject ) => { resolve( {} ); } : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | PromiseLike<{}>) => void
>reject : (reason?: any) => void
>resolve( {} ) : void
>resolve : (value?: {} | Awaitable<{}>) => void
>resolve : (value?: {} | PromiseLike<{}>) => void
>{} : {}
export default x;

View file

@ -3,11 +3,11 @@ const x = new Promise( ( resolve, reject ) => { resolve( {} ); } );
>x : Promise<{}>
>new Promise( ( resolve, reject ) => { resolve( {} ); } ) : Promise<{}>
>Promise : PromiseConstructor
>( resolve, reject ) => { resolve( {} ); } : (resolve: (value?: {} | Awaitable<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | Awaitable<{}>) => void
>( resolve, reject ) => { resolve( {} ); } : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | PromiseLike<{}>) => void
>reject : (reason?: any) => void
>resolve( {} ) : void
>resolve : (value?: {} | Awaitable<{}>) => void
>resolve : (value?: {} | PromiseLike<{}>) => void
>{} : {}
export default x;

View file

@ -21,8 +21,8 @@ export class BrokenClass {
>Array : T[]
>MyModule : any
>MyModel : MyModule.MyModel
>(resolve, reject) => { let result: Array<MyModule.MyModel> = []; let populateItems = (order) => { return new Promise((resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); }); }; return Promise.all(result.map(populateItems)) .then((orders: Array<MyModule.MyModel>) => { resolve(orders); }); } : (resolve: (value?: MyModule.MyModel[] | Awaitable<MyModule.MyModel[]>) => void, reject: (reason?: any) => void) => Promise<void>
>resolve : (value?: MyModule.MyModel[] | Awaitable<MyModule.MyModel[]>) => void
>(resolve, reject) => { let result: Array<MyModule.MyModel> = []; let populateItems = (order) => { return new Promise((resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); }); }; return Promise.all(result.map(populateItems)) .then((orders: Array<MyModule.MyModel>) => { resolve(orders); }); } : (resolve: (value?: MyModule.MyModel[] | PromiseLike<MyModule.MyModel[]>) => void, reject: (reason?: any) => void) => Promise<void>
>resolve : (value?: MyModule.MyModel[] | PromiseLike<MyModule.MyModel[]>) => void
>reject : (reason?: any) => void
let result: Array<MyModule.MyModel> = [];
@ -40,8 +40,8 @@ export class BrokenClass {
return new Promise((resolve, reject) => {
>new Promise((resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); }) : Promise<{}>
>Promise : PromiseConstructor
>(resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); } : (resolve: (value?: {} | Awaitable<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | Awaitable<{}>) => void
>(resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); } : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | PromiseLike<{}>) => void
>reject : (reason?: any) => void
this.doStuff(order.id)
@ -69,7 +69,7 @@ export class BrokenClass {
resolve(order);
>resolve(order) : void
>resolve : (value?: {} | Awaitable<{}>) => void
>resolve : (value?: {} | PromiseLike<{}>) => void
>order : any
});
@ -99,7 +99,7 @@ export class BrokenClass {
resolve(orders);
>resolve(orders) : void
>resolve : (value?: MyModule.MyModel[] | Awaitable<MyModule.MyModel[]>) => void
>resolve : (value?: MyModule.MyModel[] | PromiseLike<MyModule.MyModel[]>) => void
>orders : MyModule.MyModel[]
});

View file

@ -137,8 +137,8 @@ async function out() {
return new Promise(function (resolve, reject) {});
>new Promise(function (resolve, reject) {}) : Promise<{}>
>Promise : PromiseConstructor
>function (resolve, reject) {} : (resolve: (value?: {} | Awaitable<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | Awaitable<{}>) => void
>function (resolve, reject) {} : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | PromiseLike<{}>) => void
>reject : (reason?: any) => void
}

View file

@ -137,8 +137,8 @@ async function out() {
return new Promise(function (resolve, reject) {});
>new Promise(function (resolve, reject) {}) : Promise<{}>
>Promise : PromiseConstructor
>function (resolve, reject) {} : (resolve: (value?: {} | Awaitable<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | Awaitable<{}>) => void
>function (resolve, reject) {} : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | PromiseLike<{}>) => void
>reject : (reason?: any) => void
}

View file

@ -137,8 +137,8 @@ async function out() {
return new Promise(function (resolve, reject) {});
>new Promise(function (resolve, reject) {}) : Promise<{}>
>Promise : PromiseConstructor
>function (resolve, reject) {} : (resolve: (value?: {} | Awaitable<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | Awaitable<{}>) => void
>function (resolve, reject) {} : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void
>resolve : (value?: {} | PromiseLike<{}>) => void
>reject : (reason?: any) => void
}