1 回答

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個贊
我在使用打字稿并遵循h(huán)ttps://discordjs.guide的指南時遇到了同樣的問題
默認(rèn)情況下,commands它不是對象的現(xiàn)有屬性類型,但您可以通過創(chuàng)建文件Discord.Client輕松地使用您自己的類型擴(kuò)展 Discord.js 類型。.d.ts
discord.d.ts我的項目目錄中有文件,它包含:
declare module "discord.js" {
export interface Client {
commands: Collection<unknown, any>
}
}
這解決了我的問題。
如果您使用discord.js 指南中的單文件樣式命令,甚至更好:
import { Message } 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[]) => SomeType // Can be `Promise<SomeType>` if using async
}
}
這樣,您還可以在從 訪問命令對象時獲得代碼補(bǔ)全,如果需要this.client.commands.get("commandName"),您還可以從.Commandimport { Command } from "discord.js"
當(dāng)我想從命令文件中嚴(yán)格鍵入導(dǎo)出的命令時,我發(fā)現(xiàn)這很有用,例如:
import { Command } from "discord.js";
// Now `command` is strictly typed to `Command` interface
const command: Command = {
name: "someCommand",
description: "Some Command",
execute(message, args): SomeType /* Can be Promise<SomeType> if using async */ {
// do something
}
};
export = command;
添加回答
舉報