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

时间:2020-08-16 10:04:32

标签: reactjs typescript typescript-compiler-api

我对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进行访问。

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

0 个答案:

没有答案