From d05334fd3cd8fb913e869654f25eb8230493de11 Mon Sep 17 00:00:00 2001 From: BadCoder1337 Date: Fri, 20 Sep 2019 00:01:08 +0300 Subject: [PATCH] typings: make TypeScript interaction with channels better (#3469) * make channel returning methods generic * channel's type inference from kind of channel * add extends * rename generic due to name convention * edit overload * Update index.d.ts * Update index.d.ts * Update index.d.ts Co-authored-by: Crawl Co-authored-by: SpaceEEC --- typings/index.d.ts | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/typings/index.d.ts b/typings/index.d.ts index 811aa78ae..fdf1a5b81 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -789,20 +789,20 @@ declare module 'discord.js' { public readonly position: number; public rawPosition: number; public readonly viewable: boolean; - public clone(options?: GuildChannelCloneOptions): Promise; + public clone(options?: GuildChannelCloneOptions): Promise; public createInvite(options?: InviteOptions): Promise; - public createOverwrite(userOrRole: RoleResolvable | UserResolvable, options: PermissionOverwriteOption, reason?: string): Promise; - public edit(data: ChannelData, reason?: string): Promise; + public createOverwrite(userOrRole: RoleResolvable | UserResolvable, options: PermissionOverwriteOption, reason?: string): Promise; + public edit(data: ChannelData, reason?: string): Promise; public equals(channel: GuildChannel): boolean; public fetchInvites(): Promise>; - public lockPermissions(): Promise; - public overwritePermissions(options?: { permissionOverwrites?: OverwriteResolvable[] | Collection, reason?: string }): Promise; + public lockPermissions(): Promise; + public overwritePermissions(options?: { permissionOverwrites?: OverwriteResolvable[] | Collection, reason?: string }): Promise; public permissionsFor(memberOrRole: GuildMemberResolvable | RoleResolvable): Readonly | null; - public setName(name: string, reason?: string): Promise; - public setParent(channel: GuildChannel | Snowflake, options?: { lockPermissions?: boolean, reason?: string }): Promise; - public setPosition(position: number, options?: { relative?: boolean, reason?: string }): Promise; - public setTopic(topic: string, reason?: string): Promise; - public updateOverwrite(userOrRole: RoleResolvable | UserResolvable, options: PermissionOverwriteOption, reason?: string): Promise; + public setName(name: string, reason?: string): Promise; + public setParent(channel: GuildChannel | Snowflake, options?: { lockPermissions?: boolean, reason?: string }): Promise; + public setPosition(position: number, options?: { relative?: boolean, reason?: string }): Promise; + public setTopic(topic: string, reason?: string): Promise; + public updateOverwrite(userOrRole: RoleResolvable | UserResolvable, options: PermissionOverwriteOption, reason?: string): Promise; } export class StoreChannel extends GuildChannel { @@ -1738,7 +1738,10 @@ declare module 'discord.js' { export class GuildChannelStore extends DataStore { constructor(guild: Guild, iterable?: Iterable); - public create(name: string, options?: GuildCreateChannelOptions): Promise; + public create(name: string, options: GuildCreateChannelOptions & { type: 'voice' }): Promise; + public create(name: string, options: GuildCreateChannelOptions & { type: 'category' }): Promise; + public create(name: string, options?: GuildCreateChannelOptions & { type?: 'text' }): Promise; + public create(name: string, options: GuildCreateChannelOptions): Promise; } // Hacky workaround because changing the signature of an overridden method errors