我对TypeScript和编译器API还是很陌生,我正在尝试为React TypeScript项目生成文档。我已经尝试过TypeDoc和react-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;
将生成一个看起来像这样的对象(react-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进行访问。
我希望这是有道理的。
任何帮助将不胜感激!