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

如何使用JSDoc为React复合组件FormTest.HelpText编写规范文档?

问题描述

用户已有一个用JSDoc编写了规范文档的HelpText组件,鼠标悬停该组件时可正常查看其文档:

/**
 * 为用户提供帮助文本的React组件
 * @typedef HelpText
 * @type {typeof HelpText}
 * @param id - 帮助文本元素的ID(必填)
 * @param text - 要显示的文本信息(可选)
 * @param cssClasses - 应用于帮助文本元素的CSS类(可选)
 * @param children - 要包含在帮助文本元素中的子组件(可选),可替代text参数使用
 * @returns 带有指定ID和CSS类的memoized div元素,包含文本和/或子组件
 */
const HelpText: React.FC<IHelpText> = ({
  id,
  text,
  cssClasses = "form-text",
  children,
}) => {
  return (
    <div id={id + "-helpText"} className={cssClasses}>
      {text}
      {children}
    </div>
  );
};

export default HelpText;

现在用户将该组件挂载为复合组件FormTest的子组件:

import HelpText, { IHelpText } from "../HelpText";

interface IFormTestProps {
    children: React.ReactNode;
}

const FormTest: React.FC<IFormTestProps> & { HelpText: React.FC<IHelpText> } = ({ children }) => {    
    return (
    <>
        {children} 
    </>
    );
};

FormTest.HelpText = HelpText;

export default FormTest;

请问如何通过JSDoc让FormTest.HelpText的文档能正常显示?


解决方法

方案1:直接为FormTest.HelpText添加JSDoc注释

在赋值语句上方添加与原HelpText一致的JSDoc,直接复用原组件的文档内容:

/**
 * 为用户提供帮助文本的React组件
 * @param id - 帮助文本元素的ID(必填)
 * @param text - 要显示的文本信息(可选)
 * @param cssClasses - 应用于帮助文本元素的CSS类(可选)
 * @param children - 要包含在帮助文本元素中的子组件(可选),可替代text参数使用
 * @returns 带有指定ID和CSS类的memoized div元素,包含文本和/或子组件
 */
FormTest.HelpText = HelpText;

方案2:通过类型声明自动继承文档

修改FormTest的类型定义,让HelpText属性直接复用原组件的typeof HelpText类型,IDE会自动识别并继承原组件的JSDoc:

// 将类型声明里的React.FC<IHelpText>替换为typeof HelpText
const FormTest: React.FC<IFormTestProps> & { HelpText: typeof HelpText } = ({ children }) => {    
    return (
    <>
        {children} 
    </>
    );
};

FormTest.HelpText = HelpText;

方案3:为FormTest添加类型注释关联子组件

给FormTest的整体类型添加JSDoc,明确标注HelpText属性的功能和来源:

/**
 * 表单容器组件
 * @property {typeof HelpText} HelpText - 内置的帮助文本组件,功能与独立的HelpText组件完全一致
 */
const FormTest: React.FC<IFormTestProps> & { HelpText: typeof HelpText } = ({ children }) => {    
    return (
    <>
        {children} 
    </>
    );
};

FormTest.HelpText = HelpText;

以上三种方案都能实现鼠标悬停FormTest.HelpText时正常显示原组件的文档信息,其中方案2最简洁,通过类型复用直接完成文档继承。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:27:47