You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中infer推断可枚举联合类型时为何遍历三元运算符双分支?

TypeScript中infer推断枚举/无限类型时的分支差异问题

现象说明

在TypeScript的类型定义中使用infer推断类型时,存在以下差异行为:

  • 当推断目标为可枚举类型(如boolean这类多值联合类型)时,会遍历内部三元运算的真假两个分支,最终返回两个分支结果的联合类型;
  • 当推断目标为不可枚举类型(如string、number这类无限集合类型)时,只会走内部三元运算的其中一个分支;
  • 无infer的场景下,类型收窄逻辑符合常规预期。

示例代码

// union1 的类型为 0 | 1;alt1 的类型为 0
var union1:
    boolean extends infer Type ?
        Type extends true ?
            1 :
            0 :
        never;

var alt1: boolean extends true ? 1 : 0;


// union4 的类型为 0;alt4 的类型为 0
var union4:
    string extends infer Type ?
        Type extends "a" ?
            1 :
            0 :
        never;
var alt4: string extends "a" ? 1 : 0;

疑问

  1. 上述行为的底层原因是什么?
  2. 该行为对应的规则在TypeScript官方文档的哪个位置有明确说明?

内容的提问来源于stack exchange,提问作者Andrew Philips

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:05:32