Skip to content

Commit 45552fa

Browse files
authored
types: make Client.on() compatible with esnext.disposable in TS5.6+ (#10773)
1 parent ebfd526 commit 45552fa

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

packages/discord.js/typings/index.d.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1029,6 +1029,16 @@ export type If<Value extends boolean, TrueResult, FalseResult = null> = Value ex
10291029
? FalseResult
10301030
: TrueResult | FalseResult;
10311031

1032+
/** @internal */
1033+
type AsyncEventIteratorDisposability =
1034+
ReturnType<typeof EventEmitter.on> extends AsyncDisposable ? AsyncDisposable : {};
1035+
/** @internal */
1036+
interface AsyncEventIterator<Params extends any[]>
1037+
extends AsyncIterableIterator<Params>,
1038+
AsyncEventIteratorDisposability {
1039+
[Symbol.asyncIterator](): AsyncEventIterator<Params>;
1040+
}
1041+
10321042
export class Client<Ready extends boolean = boolean> extends BaseClient {
10331043
public constructor(options: ClientOptions);
10341044
private actions: unknown;
@@ -1049,7 +1059,7 @@ export class Client<Ready extends boolean = boolean> extends BaseClient {
10491059
eventEmitter: Emitter,
10501060
eventName: Emitter extends Client ? Event : string | symbol,
10511061
options?: { signal?: AbortSignal | undefined },
1052-
): AsyncIterableIterator<Emitter extends Client ? ClientEvents[Event] : any[]>;
1062+
): AsyncEventIterator<Emitter extends Client ? ClientEvents[Event] : any[]>;
10531063

10541064
public application: If<Ready, ClientApplication>;
10551065
public channels: ChannelManager;

packages/discord.js/typings/index.test-d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1322,7 +1322,7 @@ client.on('guildCreate', async g => {
13221322

13231323
// EventEmitter static method overrides
13241324
expectType<Promise<[Client<true>]>>(Client.once(client, 'ready'));
1325-
expectType<AsyncIterableIterator<[Client<true>]>>(Client.on(client, 'ready'));
1325+
expectAssignable<AsyncIterableIterator<[Client<true>]>>(Client.on(client, 'ready'));
13261326

13271327
client.login('absolutely-valid-token');
13281328

0 commit comments

Comments
 (0)