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

如何在同步多组件公共Props时覆盖TSDoc/JSDoc注释?

在TypeScript中为继承的React组件Props添加自定义TSDoc注释

问题场景

我正在用TypeScript开发React组件<EmailHeader>,需要定义它的Props类型。为了和父组件<EmailEditor>保持Props同步,我用Pick来合并继承的Props和自有Props,代码如下:

export type EmailHeaderProps = Pick<EmailEditorProps, 'availableSenders'> &
    Pick<EmailEditorProps['email'], 'sender' | 'recipients' | 'subject'> & {
        // 自有Props定义在此处
    };

现在我想给这些继承来的Props添加父组件不需要的特定TSDoc/JSDoc注释,但又不想放弃Props同步,请问有没有办法实现?还是必须重新声明每个属性并添加自定义注释?


可行解决方案

方法1:Omit+重新声明(保留类型同步的最优解)

可以先通过Omit排除需要自定义注释的属性,再重新声明这些属性并添加专属TSDoc,同时直接复用父组件的类型定义来保证类型同步。这样父组件类型变更时,子组件的类型会自动同步,只需要维护注释即可。

示例代码:

// 提取继承的基础类型,排除要自定义注释的属性
type InheritedEmailHeaderProps = Omit<
  Pick<EmailEditorProps, 'availableSenders'> &
  Pick<EmailEditorProps['email'], 'sender' | 'recipients' | 'subject'>,
  'availableSenders' | 'sender' | 'recipients' | 'subject'
>;

export type EmailHeaderProps = InheritedEmailHeaderProps & {
  /**
   * <EmailHeader>专属:可选发件人列表,用于头部快速切换发件人
   */
  availableSenders: EmailEditorProps['availableSenders'];
  /**
   * <EmailHeader>专属:当前选中的发件人信息,支持下拉切换
   */
  sender: EmailEditorProps['email']['sender'];
  /**
   * <EmailHeader>专属:邮件收件人集合,支持批量添加/删除
   */
  recipients: EmailEditorProps['email']['recipients'];
  /**
   * <EmailHeader>专属:邮件主题,限制最多100字符
   */
  subject: EmailEditorProps['email']['subject'];

  // 自有Props定义在此处
};

方法2:利用@inheritDoc标签(工具依赖型方案)

如果你的文档生成工具(如TypeDoc)支持TSDoc的@inheritDoc标签,可以在自定义注释中引用父组件的原有注释,再补充专属内容。不过这种方式需要额外声明变量来挂载注释,且兼容性有限。

示例代码:

export type EmailHeaderProps = Pick<EmailEditorProps, 'availableSenders'> &
  Pick<EmailEditorProps['email'], 'sender' | 'recipients' | 'subject'> & {
    // 自有Props定义在此处
  };

/**
 * <EmailHeader>专属:可选发件人列表,用于头部快速切换发件人
 * @inheritDoc EmailEditorProps.availableSenders
 */
export declare let availableSenders: EmailHeaderProps['availableSenders'];

// 其他属性同理添加注释声明

总结

不需要完全放弃Props同步,方法1是兼顾类型同步和自定义注释的最优选择:既保留了父组件类型变更时的自动同步能力,又能给每个继承属性添加专属的TSDoc说明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:26:03