用途:这是一条 TypeScript 编码规范,针对函数签名中多个同类型参数容易传错顺序的问题,建议改用对象(命名)参数,让调用自文档化,减少参数顺序错误。适用于存在两个及以上同类型参数的函数、参数顺序容易混淆的 API、会被频繁调用的接口,以及需要重构的混乱函数签名。
主要能力:TypeScript 无法检测同类型参数被交换的错误,例如 (string, string, string) 时,把收件人与主题写反也不会报错。使用对象参数后,字段名会强制调用方明确含义,IDE 自动补全也更有效。文中给出了 sendEmail、formatDate、drawRect 等示例,并建议用解构让实现更清晰,用可选字段和默认值处理可选参数,必要时采用“第一个必需参数 + 选项对象”的混合形式。
限制与例外:当参数类型不同、只有一个参数,或属于数学函数、数组方法等广为人知的约定时,位置参数可以接受。文中也回应了“对象语法太啰嗦”“其他库都用位置参数”等反对意见,强调一次性啰嗦可避免长期混淆。
依据:该技能基于 Dan Vanderkam 所著《Effective TypeScript》第 38 条“避免同类型的重复参数”。具体安装方式、平台支持与收费信息暂未提供。