用途:该技能在代码开发者、质量审查者或设计架构师处理 React/TypeScript 代码时调用,用于强制遵循结构完整性原则,避免过度抽象掩盖业务逻辑,也避免重复代码。
主要能力与规则:
- 单一事实来源:每个类型/接口只在唯一规范文件中定义,其他使用方从该文件导入;用 Pick<T,K> 或 Omit<T,K> 生成局部视图,禁止 FooLike 或本地接口副本。所有行为值(阈值、延迟、边距、尺寸)须为集中常量文件中的命名常量,并附规格注释,禁止魔法数字。两处以上重复计算应抽取为 lib/utils/ 下的纯函数工具。
- 最小分支与循环:每个 if、三元或 switch 须对应明确功能需求;用数据驱动(映射、查找、数组方法)减少分支;避免嵌套条件,使用提前返回或守卫子句;三元不可链式或嵌套。循环避免冗余迭代,成员检查用 Set.has() 而非 indexOf/find,优先声明式方法。每个 catch 必须记录或传播错误,不得静默吞掉;处理取消/预期错误后立即返回;try 范围与操作匹配。
- 职责分离:展示型组件通过 props 接收数据与动作,不直接访问 store;容器组件/钩子负责数据获取与状态管理;组件超过约 200 行应拆分。每个自定义钩子只做一件事,返回最小类型化接口;React 消费的返回值用 useState 而非 refs+forceUpdate。每个文件导出一个主要关注点;类型与主要消费者同置,被 3 个以上文件共享时提升到 lib/types/;常量同理。
- 派生状态:可由其他状态计算的值应使用选择器,而非手动维护字段;用选择器自动更新,避免在多个变更路径中同步。基于 ref 的钩子用 useState 版本计数器触发重渲染,禁止 forceUpdate({})。
- CSS 与 JavaScript:过渡、透明度、颜色、滚动条样式等视觉关注点应放在 CSS,不用 classList.add() 或内联样式操作;用 React 状态切换 CSS 类;合并相关样式,避免重复内联 <style>。
- 资源管理:Worker、IntersectionObserver 等昂贵浏览器 API 应作为模块级单例并设固定上限,用 WeakMap<Element, callback> 路由回调以允许元素回收;禁止每组件实例化。每个 observe() 须有对应 unobserve()/disconnect();setTimeout/setInterval 须在清理中清除;跟踪 DOM 的 ref 映射须在数据源缩小时清除过期项。cancel() 必须 reject promise,否则泄漏 promise 及其闭包;跟踪哪个资源拥有哪个待处理请求。
适用场景:React/TypeScript 项目的代码开发、质量审查与架构设计阶段。
限制:资料未提供安装命令、平台支持、收费方式或具体使用步骤,暂未提供。