用途:在编写泛型函数或类型、审查类型签名、发现某个类型参数只出现一次,或想为“灵活性”临时添加泛型时,帮助判断并移除不必要的类型参数。核心原则是“泛型黄金法则”:类型参数应在一个签名中出现两次或以上,否则它没有关联任何类型,通常多余。
主要能力与判定:识别只出现在返回类型中的泛型(如 function parseYAML<T>(input: string): T),它等价于返回 any 或 unknown 加类型断言,会制造安全假象;识别只使用一次的类型参数(如 type Fn = <T>(x: T) => void);识别形如 function third<A, B, C>(a: A, b: B, c: C): C 中 A、B 只出现一次的情况;识别 T extends X 但 T 只出现一次、约束无益的写法。判断依据包括:数出现次数、检查是否在多个值之间建立类型关系、考虑能否用 unknown 替代、测试泛型是否改善类型推断。
必要用法与修正方式:对仅返回的泛型,改为返回 unknown 并让调用方显式断言,或使用类型守卫验证;对多参数函数,只保留出现两次的参数,把单次出现的参数改为 unknown;把仅用于单个方法的类泛型移到方法上,或直接使用具体类型甚至独立函数。合法示例:identity<T>(arg: T): T、getProperty<T, K extends keyof T>(obj: T, key: K): T[K]。
适用场景:泛型 API 设计、类型签名审查、排查类型推断不佳的问题、抵抗他人要求添加“更灵活”泛型的压力。限制:资料未提供安装命令、平台支持、收费或价格信息;该技能属于类型层面的编码建议,并非自动修复工具,规则需人工判断。