有没有一种方法可以使用TypeScript Compiler API从嵌套函数中提取类型和JSdocs注释?

问题描述

我对TypeScript和编译器API还是很陌生,我正在尝试为React TypeScript项目生成文档。我已经尝试过TypeDocreact-docgen-typescript。 这两个工具缺少的是我想添加的一种方法,可以为另一个函数内部声明的函数提取文档注释。更确切地说,是在React功能组件内部声明的函数。 因此,例如,一个如下所示的组件:

/** My Functional Component */
const MyFc = () => {
  
  /** Handle something */
  handler = (
    /** describe param */
    e: UIEvent
  ): void => {
    // do something
  }

  return <button onClick={handler}>Click!</button>
}

export default MyFc;

生成一个看起来像这样的对象(r​​eact-docgen-typescript输出):

{
  "description": "My Functional Component","displayName": "MyFc","methods": [
    {
      "description": "Handle something","modifiers": [],"name": "handler","params": [
        {
          "description": "describe param","name": "e","type": {
            "name": "UIEvent"
          }
        }
      ],"returns": null
    }
  ],"props": {}
}

我也很乐意为FC内部声明的其他变量(例如钩子调用提取文档注释。

我的问题是,在FC内部声明的变量和函数即使是对象的一部分,也不会由Typescript接口公开公开。即,登录到控制台的组件的ts.Type对象时,我可以看到ts.Type.symbol.valueDeclaration.locals中的嵌套函数,但是valueDeclaration的类型为ts.Node,对象的{{1 }}不是其公共接口的一部分,因此无法通过编译器API进行访问。

我希望这是有道理的。
任何帮助将不胜感激!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)