逆变位置中的 infer 为什么可能得到交叉结果,类型提取工具应如何避免脆弱推断
简答题困难737 次浏览
参考答案与解析
# 核心结论
infer 不是从类型文本中机械截取一段内容,而是在条件类型匹配过程中声明待推断变量。多个候选如何合并与候选所在位置的方差有关:协变位置中的候选通常倾向于形成联合类型;逆变位置中的候选为了能被所有分支安全接受,可能形成交叉类型或收窄为不可用结果。条件类型是否对联合类型进行分发也会改变结果。因此,类型提取工具必须先明确要表达“任一分支允许的类型”还是“所有分支都能安全处理的类型”,不能依赖偶然得到的推断结果。
# 底层机制
函数返回值通常处于协变位置,函数参数通常处于逆变位置。假设两个处理器分别需要 { a: string } 与 { b: number },如果目标是找出一个能够安全传给两个处
