用途:在设计表示状态的 TypeScript 类型时,确保类型只能表达合法状态。适用于应用状态类型设计、含关联字段的类型建模、有依赖关系的状态建模、调试“不可能状态”错误以及重构混乱的类型定义。
主要能力:识别“非法状态”异味,即类型允许本不该出现的值组合,例如状态字符串搭配可选 data/error 字段、相互依赖的多个布尔标志、本应同时出现或同时缺失的可选字段、注释里写“若 X 则必须设置 Y”、用于检查不可能组合的校验代码,以及带“不应发生”默认分支的 switch。
核心做法:用可辨识联合为每个状态建一个接口,只在该状态需要的字段上出现;把相关字段收进同一个可选嵌套对象,让它们一起出现或一起缺失;对存在冲突的多个真相来源改为单一真相来源。流程为:列出系统所有可能状态、确定每个状态所需数据、为每个状态建接口、用可辨识联合合并、验证是否还能构造出非法状态。仓库同时给出对“类型太多太麻烦”“运行时再校验”“只是内部状态”等阻力的回应。
示例要点:RequestState 用 pending/loading/success(data)/error(error) 联合替代带可选字段的单一接口;PageState 同理;Person 的出生地与出生日期收进可选 birth 对象;驾驶舱左右操纵杆冲突的 Air France 447 反例改为单一 stickAngle。
限制:资料未提供该技能的安装方式、命令、平台或价格信息。