feat(Client): add conditional ready typings (#6073)

This commit is contained in:
Shino
2021-07-14 11:19:38 -04:00
committed by GitHub
parent 60148c6a78
commit 4206e35b23
4 changed files with 46 additions and 10 deletions

View File

@@ -5,6 +5,8 @@ import {
ApplicationCommandResolvable,
CategoryChannel,
Client,
ClientApplication,
ClientUser,
Collection,
Constants,
DMChannel,
@@ -447,6 +449,27 @@ client.on('interaction', async interaction => {
client.login('absolutely-valid-token');
// Test client conditional types
client.on('ready', client => {
assertType<Client<true>>(client);
});
declare const loggedInClient: Client<true>;
assertType<ClientApplication>(loggedInClient.application);
assertType<Date>(loggedInClient.readyAt);
assertType<number>(loggedInClient.readyTimestamp);
assertType<string>(loggedInClient.token);
assertType<number>(loggedInClient.uptime);
assertType<ClientUser>(loggedInClient.user);
declare const loggedOutClient: Client<false>;
assertType<null>(loggedOutClient.application);
assertType<null>(loggedOutClient.readyAt);
assertType<null>(loggedOutClient.readyTimestamp);
assertType<string | null>(loggedOutClient.token);
assertType<null>(loggedOutClient.uptime);
assertType<null>(loggedOutClient.user);
// Test type transformation:
declare const assertType: <T>(value: T) => asserts value is T;
declare const serialize: <T>(value: T) => Serialized<T>;