用途:在编写或编辑 Web 相关代码前阅读,作为实现计划与编码过程的规范约束,覆盖 TypeScript、CSS、HTML/JSX 和测试四部分。
主要能力与要求:
TypeScript:不随意使用类型断言,仅当先写出无断言代码并遇到类型错误、无法通过改进别处类型定义解决、且不损害类型安全时才可用。不随意使用 ReturnType;项目内函数优先直接写简单类型或定义具名返回类型复用;库函数先查类型定义并优先使用导出的类型,仅库未导出时在类型参数内使用 ReturnType。优先 as const satisfies 而非类型注解,先不写注解,报错时先改进别处类型定义,必要时才加注;对象需符合特定类型时用 satisfies,不会变动时再加 as const,无需为 as const satisfies 的值写 ReadOnly。不要为绕过问题而禁用 ESLint 规则,应先理解规则目的并改进代码,仅当遵守会让代码过度复杂、属明显误报、有其他正当理由或修复与规则本意冲突时才禁用;示例涉及 sort-imports、no-magic-numbers、max-lines、max-lines-per-function。不要重复自行校验,类型设计良好时验证通常仅在用户输入或 Web API 响应等项目边界需要;先检查依赖中是否已装校验库,有则复用其能力而非自写校验器。
CSS:只定义必要样式。先确认项目是否加载并应用了 reset CSS,若已生效则无需重复定义 margin: 0 之类;只写需要偏离父元素的属性,利用继承。排版上除非绝对必要(如代码块)不在文档根之外指定 font-family,无明确理由不改变字号,字号或依赖字号的区域用 em、rem 而非 px。
HTML 与 JSX:避免冗余定义。有 UI 组件库时积极复用其组件,减少自定义实现;避免添加多余属性,例如图标组件库默认已设 aria-hidden 时无需再设。
测试:合理设计测试。不要 mock 应用自有模块,优先真实实现,测试可观察行为而非实现接线,仅在缓慢、不确定、破坏性或外部边界处使用 mock;避免只断言 mock 调用或 mock 配置值的测试。从外部行为而非内部实现测试,重构即需改动的测试是坏测试;测试项目代码而非浏览器或外部库。不要为测试而导出函数或值,仅测试内部使用的内容时用源码内测试而非导出并新建测试文件。不要 mock 外部环境,需访问数据库或外部服务器时用 Testcontainers,需要定时器时用测试库的假定时器。
适用场景:Web 前端与相关代码的实现计划、编写、修改和评审。限制:资料未说明其授权方式、依赖版本或与其他技能的兼容性,暂未提供相关收费与平台信息。