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

如何在JSDoc中无需导入即可引用已导出的对象?

可行的实现方案

下面按推荐优先级排序:

方案1:JSDoc内联导入(最推荐)

TypeScript 4.9及以上版本原生支持在JSDoc标签内直接写导入语句,不需要在顶层额外导入类型,完全不会触发未使用变量的报错,代码最简洁。
示例代码:

/**
 * @returns 营业时间,详情参考:{@link import("@/lib/types/business-time").BusinessTime BusinessTime}
 */
export function getBusinessTimes() {}

方案2:配置ESLint识别JSDoc引用

如果需要在文件内多处引用该类型,不想每次都写全导入路径,可以修改ESLint规则配置,让@typescript-eslint/no-unused-vars自动识别JSDoc中引用的变量,不需要加下划线也不需要写禁用注释。
在你的ESLint配置文件中添加如下规则:

{
  "rules": {
    "@typescript-eslint/no-unused-vars": ["error", {
      "enableJSDoc": true
    }]
  }
}

配置后即可正常导入使用:

import type { BusinessTime } from "@/lib/types/business-time"

/**
 * @returns 营业时间,详情参考:{@link BusinessTime}
 */
export function getBusinessTimes() {}

方案3:明确标注局部禁用的原因

如果无法使用前两种方案(比如TS版本低于4.9、不允许修改全局ESLint配置),可以保留局部禁用注释,但去掉无意义的下划线重命名,在注释中明确说明禁用原因,提升代码可读性:

// eslint-disable-next-line @typescript-eslint/no-unused-vars -- 该类型仅在JSDoc的@link标签中引用
import type { BusinessTime } from "@/lib/types/business-time"

/**
 * @returns 营业时间,详情参考:{@link BusinessTime}
 */
export function getBusinessTimes() {}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:00:00