用途:这是一份项目级 TypeScript 约定,用于在编辑 .ts 文件或评审 TypeScript 设计时统一类型、导入、泛型、工厂与运行时 schema 的写法,可与 arktype、typebox、testing、method-shorthand-jsdoc 等更细的技能组合使用。
主要能力:核心规则包括优先派生或导入已有类型,再声明新的具名类型;新具名类型须是真实契约、协议词汇、可辨识结果联合、能力端口或多实现形状。把局部形状复制视为边界坏味道,优先使用所属运行时类型、schema 推断、工厂返回类型、函数签名或调用方拥有的能力函数。类型自下而上组合:用 Base & Extra 扩展,不用 Omit<Base,'k'> & {k:U} 做结构覆盖;收窄接口应返回该基类型而非 Omit 掉成员。使用 type 而非 interface;readonly 仅用于数组和映射,除非精确匹配上游类型;缩写按普通单词处理,如 parseUrl、defineTable、readJson、customerId;相对导入使用 .js 扩展名,不用无扩展名或 .ts;在声明处导出符号,export { ... } from ... 仅留给 barrel 文件。React/TSX 中优先具名函数组件并显式声明 props 参数,而非 React.FC/FunctionComponent;仅在把组件值存入注册表或作为数据传递时才为其标注类型。优先工厂函数而非类,用闭包位置表达私有与公开 API。泛型名带 T 前缀,如 TSchema、TDefs、TKey。配置包在函数签名中解构,仅当它是被转换或转发的领域对象时保留具名值。私有与内部返回类型交给推断,导出 API 仅在有助于清晰或打破循环推断时标注。若导出类型恰是 create*、attach*、open* 等工厂返回的对象,用 ReturnType<typeof createThing> 从实现派生,并把导出别名紧跟在工厂之后;输入、配置、数据、协议与多实现契约类型放在工厂之前。面向使用者的 JSDoc 移到返回对象的成员上。柯里化工厂从内层返回派生,如 ReturnType<ReturnType<typeof createThing>>;泛型工厂按需实例化 typeof,如 ReturnType<typeof openThing<TActions>>。用 getter 保留有意的只读公开表面。当身份意味着特定工厂输出而非偶然形状探测时使用 Symbol brand。避免 as any,改用 unknown、校验、brand 或更窄的辅助函数。检查可选属性优先用可选链而非 in 或真值判断。布尔值用 is、has、can 前缀。对同一值反复相等比较优先 switch,必要时用 default: value satisfies never 做穷尽性检查。有限值映射优先 Record 查找表而非嵌套三元。类型化错误自下而上组合,不在边界过滤宽泛的上游错误联合。质疑隐藏非法状态的静默回退,解析与序列化时保持往返不变量。
使用方式:在编辑 .ts 文件或评审 TypeScript 设计时应用上述约定,并参考项目约定、类型安全与控制流、类型组织、工厂模式、运行时 schema 模式、测试模式、高级 TypeScript 特性等参考文档。
适用场景:TypeScript 项目的类型设计、导入与导出组织、工厂函数编写、运行时 schema 与错误处理、React/TSX 组件类型声明。
限制:资料未提供安装命令、平台支持、收费方式或具体版本要求,暂未提供。