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

TypeScript中为何1 & any的运算结果为any?

关于IfAny类型中1 & T与any交叉的疑问解答

首先,你的理解偏差在于TypeScript中any类型和任何类型做交叉运算时,结果永远是any,不会保留另一个类型的字面量。

我们拆解来看:

  • 当T为any时,1 & T等价于1 & any,而TypeScript的类型系统规则里,any与任何类型交叉都会被any“吞噬”,最终结果是any,而不是你以为的字面量1。
  • 接下来判断0 extends 1 & T,也就是0 extends any。在TypeScript中,any是特殊的顶级类型,它兼容所有类型,所以0 extends any会返回true,这也是IfAny<any, Y, N>会返回Y的原因。

可以用这段代码验证:

type Test = 1 & any; // 类型结果为any,而非1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:22:01