dumi
dumi copied to clipboard
feat: API props 深度检测自定义子类型
react-docgen-typescript-dumi-tmp 是 fork 后修改的吗?
我觉得可以为它添加一个 maxPropDepth 的配置,修改 Parser ,新增 children 来放置子类型
示例:
结果:
Originally posted by @cnyballk in https://github.com/umijs/dumi/issues/633#issuecomment-945729367
react-docgen-typescript-dumi-tmp 是 fork 后修改的吗?
不是 fork,直接改产物发的版本,缘由是 TS 发版导致原 NPM 包无法 work、且官方的修复方案也不能奏效,所以 dumi 层做了临时修复,上下文参考:https://github.com/umijs/dumi/issues/732#issuecomment-870200685 ;可能目前的官方版本已经可以 work 了
我觉得可以为它添加一个 maxPropDepth 的配置,修改 Parser ,新增 children 来放置子类型
很棒!感觉上给一个 filter 更实用?有些类型即便层级很浅我们也不希望解析的,比如 HTMLElement
,另外 UI 上怎么展示也需要思考下
感觉上给一个 filter 更实用?有些类型即便层级很浅我们也不希望解析的,比如 HTMLElement
我修改的时候有添加了一个数组过滤不再深入查询,不过当前只校验了js的数据类型,得再看看如何方便检查其他基础类型,展示上或许可以参考https://ant.design/components/form-cn/#Interface?
分表格展示主要锚点比较难处理,标题用几号、重名锚点处理等,目前也没想到更好的方式
我有空先试试做个demo,看看效果
最近忙着团队绩效😵💫估计1月份才是个头
interface里面的子类型什么时候可以显示?
应该不需要深度,直接加个typeFilter的数组的props就行了,需要检测的加上就行,确实是展示才是问题
增加customTypeFilter
代码:
展示:
等待官方修复子类型说明前,可以通过增加空导出来临时解决这个问题。如下:
/** 加入这个只是为了导出子类型 */
export const TasNavItem = (props: TabsNavItem) => {};
export default TabsNav;
然后在markdown中定义API的 exports
,如下
<API exports='["default","TasNavItem"]'/>
就能看到以下效果
interface DateTimeProps extends React.HTMLAttributes<HTMLDivElement> {
datetime: number;
region: Region;
}
像这种extend引入interface, 有加filter处理的打算吗
interface DateTimeProps extends React.HTMLAttributes<HTMLDivElement> { datetime: number; region: Region; }
像这种extend引入interface, 有加filter处理的打算吗
可以在 .umirc
配置文件里配置 apiParser.propFilter.skipNodeModules
为 true
即可忽略掉
{
apiParser: {
propFilter: {
// 是否忽略从 node_modules 继承的属性,默认值为 false
skipNodeModules: true
},
}
}
最近忙着团队绩效😵💫估计1月份才是个头
目前我自己改源码别的深度都能解析出来,但是Interface[]这种就定位不到这个Interface的声明,蹲一个解决方法
目前我自己改源码别的深度都能解析出来,但是Interface[]这种就定位不到这个Interface的声明,蹲一个解决方法
Interface[] 是啥
目前我自己改源码别的深度都能解析出来,但是Interface[]这种就定位不到这个Interface的声明,蹲一个解决方法
Interface[] 是啥
就像下面这样:
interface InfoProps {
size: string | number;
}
interface Props {
info: InfoProps, // 这种可以
// info: InfoProps[], // 这种在ts解析的时候就定位不到 interface InfoProps
}
目前我自己改源码别的深度都能解析出来,但是Interface[]这种就定位不到这个Interface的声明,蹲一个解决方法
Interface[] 是啥
就像下面这样:
interface InfoProps { size: string | number; } interface Props { info: InfoProps, // 这种可以 // info: InfoProps[], // 这种在ts解析的时候就定位不到 interface InfoProps }
他是当数组类型了吧,我觉得可以自己判断下去掉[]再去获取?不过确实麻烦
请问现在这个能力支持了吗