递归条件类型下TypeScript函数参数类型意外坍缩为any的问题
TypeScript递归条件类型:元组Schema中共享约束名
required导致参数类型坍缩为any 问题背景
这是TypeScript项目#60221的跟进问题,此前Joe Calzaretta (@jcalz) 已解决首个递归条件类型问题,但当前遇到新场景:
- 使用递归条件类型定义校验Schema时,当
StringConstraints与ObjectConstraints共享required这个约束名称,函数参数context的类型会意外坍缩为any - 当使用
length这类专属约束,或给required传入非函数值时,类型推断完全正常
测试案例结论
简化测试案例验证了以下规律:
- 用元组定义
StringSchema、NumberSchema时,传入required函数参数会触发类型推断为any的错误 - 改用对象式定义Schema时,类型推断恢复正常,可确定问题与元组的使用直接相关
求助需求
- 寻求能正确得到
ValidationContext<...>预期类型推断结果的解决方法 - 询问是否应该在GitHub提交该Bug,若确认是Bug,我会尝试提交PR
内容的提问来源于stack exchange,提问作者Franck Wolff
相关产品推荐
相关产品推荐

