Export prop types consistently across components (<Name>Props)
维护者通常 2 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 76/100
- Issue 类型
- 重构
- 描述清晰度
- 描述清楚
- 活跃度
- 冷清
- 技术栈
- react, typescript
- 领域
- frontend
调研方向
先从 button.tsx、checkbox.tsx 和 tabs.tsx 中的声明开始,然后在组件文件中搜索其他缺少 export 的 Props 类型或接口。确认受影响的 prop 类型可以被消费者导入,并确认现有的组件检查仍然通过;lint 或 codemod 工作可作为后续可选工作。
由索引模型根据 Issue 内容生成。
描述
Summary
Roughly half of sampled components don't export their prop type, so consumers can't import and extend it (e.g. to build a typed wrapper). Coverage is inconsistent even among the most-used components.
Current state
Exported: SwitchProps (switch.tsx:19), AccordionRootProps (accordion-root.tsx:27), DialogContentProps (dialog-content.tsx:8), FieldProps (field-root.tsx:9), FieldsetProps (fieldset.tsx:5), IconButtonProps (icon-button.tsx:20), SelectTriggerProps (select-trigger.tsx:36).
Not exported: ButtonProps (button.tsx:127, plain type, no export), CheckboxGroupProps/CheckboxItemProps (checkbox.tsx:61,88, plain interface), TabsRootProps/TabsTabProps (tabs.tsx:25,55).
Native-attribute extension itself is consistent (125 ComponentProps<...> usages across 74 files) — this is purely about the export keyword being missing on the type/interface declaration.
Suggested approach
- Add
exportto every<ComponentName>Propstype/interface, starting with Button, Checkbox, and Tabs since they're the highest-traffic components. - Consider a lint rule (or a codemod + CI check) that flags a component file whose prop type isn't exported, so this doesn't regress on new components.
Notes
Found via a components.build practices audit (types dimension).
- 主要语言
- TypeScript
- 星标
- 69
- 派生
- 13
- 平均合并
- 3 天 15 小时
- 30 天内合并 PR
- 24
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
raystack/apsara 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 84/100
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 86/100
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 84/100
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 85/100
维护者通常 2 天内回复
-
DataView: don't offer select/multiselect filters with empty filterOptions可能已有人在做 @rohanchkrabrty 于 5 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 2 天内回复
相似的 Issue
-
area: desktop area: website priority: P2 type: feature
难度 2/5 1-3 小时 新手友好度 62/100
appandflow/stim#3411 · 1 条评论 ·
维护者通常 1 天内回复
-
needs triage
难度 2/5 1-3 小时 新手友好度 65/100
rjsf-team/react-jsonschema-form#5485 ·
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
难度 1/5 1 小时以内 新手友好度 65/100
lingdojo/kana-dojo#32090 · 1 条评论 · 5 个 reaction ·
维护者通常 1 天内回复
-
Friction: Org home and org switcher copy still say repositories and connected agents live in the personal account可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭friction
难度 2/5 1-3 小时 新手友好度 80/100
kentcdodds/kody#3265 ·
维护者通常 1 天内回复