Skip to content

Commit cbe8e69

Browse files
committed
Better typings for AsyncIterator/Generator, like #31117
1 parent 7573a6d commit cbe8e69

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

src/lib/es2018.asyncgenerator.d.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
interface AsyncGenerator<T = unknown, TReturn = any, TNext = unknown> extends AsyncIterator<T, TReturn, TNext> {
44
// NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places.
5-
next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn>>;
6-
return(value: TReturn | PromiseLike<TReturn>): Promise<IteratorResult<T, TReturn>>;
7-
throw(e: any): Promise<IteratorResult<T, TReturn>>;
5+
next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn extends PromiseLike<infer UReturn> ? UReturn : TReturn>>;
6+
return(value: TReturn): Promise<IteratorResult<T, TReturn extends PromiseLike<infer UReturn> ? UReturn : TReturn>>;
7+
throw(e: any): Promise<IteratorResult<T, TReturn extends PromiseLike<infer UReturn> ? UReturn : TReturn>>;
88
[Symbol.asyncIterator](): AsyncGenerator<T, TReturn, TNext>;
99
}
1010

src/lib/es2018.asynciterable.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ interface SymbolConstructor {
1111

1212
interface AsyncIterator<T, TReturn = any, TNext = undefined> {
1313
// NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places.
14-
next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn>>;
15-
return?(value?: TReturn | PromiseLike<TReturn>): Promise<IteratorResult<T, TReturn>>;
16-
throw?(e?: any): Promise<IteratorResult<T, TReturn>>;
14+
next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn extends PromiseLike<infer UReturn> ? UReturn : TReturn>>;
15+
return?(value?: TReturn): Promise<IteratorResult<T, TReturn extends PromiseLike<infer UReturn> ? UReturn : TReturn>>;
16+
throw?(e?: any): Promise<IteratorResult<T, TReturn extends PromiseLike<infer UReturn> ? UReturn : TReturn>>;
1717
}
1818

1919
interface AsyncIterable<T> {
@@ -22,4 +22,4 @@ interface AsyncIterable<T> {
2222

2323
interface AsyncIterableIterator<T> extends AsyncIterator<T> {
2424
[Symbol.asyncIterator](): AsyncIterableIterator<T>;
25-
}
25+
}

0 commit comments

Comments
 (0)