SuperAPI AI 工具集

typescript

编程与开发

查看项目

更新于 10-15 19:54

技能介绍

用途:这是一套 TypeScript 5+ 的团队内部约定,适用于正在编写或修改的代码,不要求为未改动的文件做重构,除非被明确要求。

主要能力与约定:用类型而非运行时检查来建模领域,品牌类型(如 type UserId = string & { readonly __brand: 'UserId' })与可辨识联合把错误推到编译期;有状态的事物(请求生命周期、表单状态、解析结果)用可辨识联合,让编译器强制处理每个状态。优先用 satisfies 而非 as,satisfies 在保留窄化字面量类型的同时做校验,as 则丢弃检查,仅在编译器无法知晓时使用并注释原因。用 as const 对象替代 enum,前者是纯值、无运行时产物,enum 会生成运行时代码且 const enum 在 isolatedModules 下会出问题。any 视为缺陷报告,改用 unknown 并收窄;边界处确实无法避免时,隔离在单个适配函数中。类型导入单独写 import type { … }。让推断发挥作用,只标注导出/公开签名。作为库被消费的代码要输出 .d.ts(declaration: true)。Monorepo 使用 project references + composite 做增量构建。

必要用法:用 assertNever 强制穷尽检查,新增联合变体时在需要更新的位置产生编译错误;品牌类型只能由做校验的构造函数产出,构造函数内部的 as 是唯一正当用法。tsconfig 基线在 strict: true 之外增加 noUncheckedIndexedAccess、noPropertyAccessFromIndexSignature、noImplicitOverride、noImplicitReturns、noFallthroughCasesInSwitch、noUnusedLocals、noUnusedParameters、isolatedModules、declaration、skipLibCheck。其中 noUncheckedIndexedAccess 价值最高也最具破坏性,会让 arr[i] 返回 T | undefined,新项目建议开启,存量项目需预期迁移。模块解析:Node 运行输出时用 NodeNext,打包器处理时用 bundler。

限制:资料未提供该约定的适用版本范围之外的信息、安装方式、收费情况与平台支持,暂未提供。