【发布时间】:2021-04-17 00:02:20
【问题描述】:
我查看了 TypeScript 的文档,以及关于扩展第三方模块的多个指南,但没有一种方法有效。
我想要完成的是将 commands 属性添加到具有 Discord.Collection() 类型的不和谐客户端。
如果我这样做:
// discord.d.ts file
import * as Discord from "discord.js";
declare module "discord.js" {
export interface Client {
commands: Collection<unknown, Command>;
}
export interface Command {
name: string;
description: string;
execute: (message: Message, args: string[]) => any; // Can be `Promise<SomeType>` if using async
}
}
// some other file
import * as Discord from "discord.js";
import "discord.d.ts";
const client = new Discord.Client();
client.commands = new Discord.Collection(); // ERROR Property 'commands' does not exist on type 'Client'.ts(2339)
我发现的唯一解决方案是将 Discord.Client() 和 Discord.Collection 包装在单独的类中,然后以这种方式访问它们,或者将类型声明添加到 discord.js index.d.ts 文件在 node_modules 中(这意味着克隆项目的其他人将无法访问该类型,因为 node_modules 在 gitignore 中)。我是否遗漏了什么,或者这个库不支持我尝试的声明扩展?
谢谢!
【问题讨论】:
标签: javascript node.js typescript discord.js typescript-typings