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

如何合并两个TypeScript联合类型?求正确实现方法

TypeScript合并两个联合类型的正确方法

你之前的写法失效核心是类型运算符优先级的问题:&(交叉类型)的优先级高于|(联合类型),导致代码被解析成了不符合预期的结构:

  • type B = 4 | 5 & A 会被解析为 4 | (5 & A),而5不在A的成员里,5 & A结果是never,最终B的类型是4
  • type C = A & 4 | 5 会被解析为 (A & 4) | 5,同理A &4是never,最终C的类型是5

而你写的D和E用了交叉类型&,但交叉类型的作用是让类型同时满足多个约束(比如合并对象属性),对于没有重叠成员的原始值联合类型,交叉后结果只能是never,完全不适合用来合并联合类型。

合并两个联合类型的正确方法非常直接,直接用|把两个联合类型整体拼接即可:

type A = 1 | 2 | 3
// 直接拼接目标成员
type X = A | 4 | 5 // 结果为 1 | 2 | 3 | 4 | 5

// 如果另一组成员也是单独的类型,同样直接用|合并
type F = 4 | 5
type X2 = A | F // 同样得到目标类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:27:34