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
相关产品推荐
相关产品推荐

