泛型推断存在多个候选来源时如何确定主导输入并阻止错误反向推断
简答题困难529 次浏览
参考答案与解析
# 核心结论
当同一个泛型参数同时出现在多个参数位置时,TypeScript 可能从多个实参收集推断候选。若业务语义要求“先由主输入确定类型,再用次要输入校验该类型”,就不应允许次要输入反向扩大泛型。此时可使用内置工具类型 NoInfer<T> 阻止指定位置成为推断来源;如果受编译环境或接口结构限制,也可以采用分阶段调用、构建器模式或重新设计泛型关系。判断谁是主导输入的依据不是参数顺序,而是业务上的数据依赖方向。
function choose<T>(options: readonly T[], fallback: NoInfer<T>): T {
return options.includes(fa
