| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
Sorry, something went wrong.
You can include es2015.promise.d.ts without es2015.iterable.d.ts. It was moved to es2015.promise.d.ts in microsoft#31117
|
as in my issue comment in #37526 UpdateMy problem is solved with the nightly version of typescript but I will leave it there in case it can be useful for something or someone
I have placed a copy of this resolved problem in #33055 and in #33707 hoping it can be helpful and not too spammy ... Issue now fixedI have a similar problem and I don't know if I should open a different issue ...
// Promise.all(this.fork) take a T1[] where T1 is a Promise<number>
// and return a Promise<T2[]> where T2 is a number
// therefore T1 and T2 are not both «T»export class MyMaybeList<T = any> {
private constructor(values: T[]) {
this.values = values;
}
private values: T[];
// get =======================================================-| fork() |-====
public get fork(): T[] {
return this.values != null ? this.values.slice() : [].slice();
}
// public =====================================================-| map() |-====
public map<R = any>(
fn: (val: T, index: number, array: T[]) => R
): MyMaybeList<R> {
return MyMaybeList.of(...this.values.map(fn));
}
// static ======================================================-| of() |-====
public static of<TVal>(...val: TVal[]): MyMaybeList<TVal> {
if (val == null || !val.length) return new MyMaybeList<TVal>([]);
return new MyMaybeList<TVal>([...val]);
}
// async =====================================================-| will() |-====
public async will /* <R> */() /* : Promise<MyMaybeList<R>> */ {
// Promise.all(this.fork) take a T1[] where T1 is Promise<number>
// and return a Promise<T2[]> where T2 is a number
// therefore T1 and T2 are not both «T»
console.log(this.fork);
const willThen = Promise.all(this.fork);
const thenWill = await willThen;
return MyMaybeList.of(...thenWill);
}
}const oneToTen = MyMaybeList.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
const powersOneToTen = oneToTen.map(async val => val * val);
// "log->" powersOneToTen: MyMaybeList<Promise<number>>
console.log(powersOneToTen);
// "log->" awaitedList: MyMaybeList<Promise<number>>
// instead of a -> MyMaybeList { Promise<number> }
// in fact is a -> Promise { MyMaybeList<number> }
const awaitedPowersOneToTen = powersOneToTen.will /* <unnknow> */();
awaitedPowersOneToTen.then(awaitedList => console.log(awaitedList));
// Promise { <pending> } will resolve into ->
console.log(awaitedPowersOneToTen);/*
// Promise.all(this.fork) take a T1[] where T1 is Promise<number>
// and return a Promise<T2[]> where T2 is a number
// therefore T1 and T2 are not both «T»
// console.log(this.fork); will display same as console.log(powersOneToTen);
// console.log(powersOneToTen); ->
// "log->" powersOneToTen: MyMaybeList<Promise<number>>
MyMaybeList {
values: [
Promise { 1 },
Promise { 4 },
Promise { 9 },
Promise { 16 },
Promise { 25 },
Promise { 36 },
Promise { 49 },
Promise { 64 },
Promise { 81 },
Promise { 100 }
]
}
// console.log(awaitedPowersOneToTen); ->
// "log ->" awaitedPowersOneToTen: Promise<MyMaybeList<Promise<number>>>
Promise { <pending> }
// Promise { <pending> } will resolve into ->
// awaitedPowersOneToTen.then(awaitedList => console.log(awaitedList)); ->
// console.log(awaitedList) ->
// "log->" awaitedList: MyMaybeList<Promise<number>>
// instead of a -> MyMaybeList { Promise<number> }
// in fact is a (should be) -> Promise { MyMaybeList<number> }
MyMaybeList {
values: [
1, 4, 9, 16, 25,
36, 49, 64, 81, 100
]
}
*/ |
Sorry, something went wrong.
|
Now that #37610 has reverted the awaited type I don't know what to do I have posted an example above but my real-life situation is as follow :
|
Sorry, something went wrong.
|
All of the issues this PR links are closed; I think that this all was handled in 4.5 with Awaited. I'm going to close this, but am happy to reopen if I'm mistaken. |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Fixes #22469
Fixes #28427
Fixes #31722