You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSDoc中引用其他模块类型作为返回/参数类型

在JSDoc中引用外部模块类型的正确方法

嘿,针对你在JSDoc里引用discord.js模块类型的需求,这里有几种靠谱的实现方式:

方法1:直接在类型注解中使用import()语法

这是最直接的方式,不需要提前定义类型,适合单次使用的场景。你可以直接在@returns或@param的类型里用import('模块名').类型名来引用外部模块的类型。

修改你的代码示例如下:

const Discord = require("discord.js");
/**
 * 返回一个带有机器人默认设置的空嵌入消息
 * @param {import('discord.js').User} u - 执行该命令的用户
 * @returns {import('discord.js').RichEmbed}
 */
exports.getDefaultEmbed = function(u) {
  let embed = new Discord.RichEmbed();
  embed.setColor(0xFA632A);
  if (u) embed.setFooter(u.tag, u.displayAvatarURL);
  return embed;
};

方法2:提前定义类型别名(适合多次复用)

如果你的代码里需要多次引用同一个外部类型,可以先用@typedef定义一个别名,之后直接使用别名即可,让代码更简洁:

const Discord = require("discord.js");
/** @typedef {import('discord.js').User} DiscordUser */
/** @typedef {import('discord.js').RichEmbed} DiscordRichEmbed */

/**
 * 返回一个带有机器人默认设置的空嵌入消息
 * @param {DiscordUser} u - 执行该命令的用户
 * @returns {DiscordRichEmbed}
 */
exports.getDefaultEmbed = function(u) {
  let embed = new Discord.RichEmbed();
  embed.setColor(0xFA632A);
  if (u) embed.setFooter(u.tag, u.displayAvatarURL);
  return embed;
};

补充说明

  • 这种import()的语法是JSDoc官方支持的模块类型引用方式,能正确识别外部npm包导出的类型定义。
  • 由于discord.js本身提供了完善的TypeScript类型声明,这种写法还能让VS Code这类编辑器给你提供更精准的代码提示和类型校验。

内容的提问来源于stack exchange,提问作者Pedro Fracassi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:00:31