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

为何TypeScript中‘& {}’能排除null与undefined?

TypeScript中& {}排除null和undefined的原理

首先要明确:TypeScript里的&和JavaScript里的按位与是完全不同的东西——TS中的&是**交叉类型(Intersection Type)**操作符,用来合并多个类型的特性,和JS的位运算没有关系。

为什么& {}能排除null和undefined?

  • TypeScript的类型系统中,{}(空对象类型)代表的是“可以被读取属性的非原始类型”,它兼容所有非null、非undefined的值(比如字符串、数字、对象、数组等,因为这些值都至少继承了Object的方法,比如toString)。
  • 而null和undefined是特殊的原始类型,它们不兼容{}类型——你不能读取null.toString()或undefined.toString()(运行时会报错,TS编译阶段也会提示类型不兼容)。
  • 当你对一个可能包含null/undefined的类型T使用交叉类型T & {}时,TS会只保留T中同时兼容{}的部分,也就是自动排除了null和undefined。

举个例子:

type MaybeString = string | null | undefined;
type NonNullableString = MaybeString & {}; // 结果为 string

可靠的查询渠道

  • TypeScript官方文档的交叉类型章节
  • TypeScript Playground:可以直接编写类型测试代码,实时查看类型推导结果
  • Stack Overflow:搜索关键词“TypeScript & {} exclude null undefined”,能找到大量开发者的讨论和案例

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

相关产品推荐
方舟 Agent Plan

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

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