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

为什么`Omit<undefined, 'foo'>`类型会表现得如同`any`?

Omit<undefined, 'foo'>的特殊类型行为

我发现Omit<undefined, 'foo'>类型的变量可以接受任意类型的值赋值,完全不会触发TypeScript的类型检查错误,表现和any类型几乎一致。

示例代码如下:

type OmittedUndefined = Omit<undefined, 'foo'>;

let a: OmittedUndefined = 1234; // 无报错
a = "asdflkjasdf"; // 无报错
a = { hello: 1234 }; // 无报错

背后的原因

TypeScript里的Omit<T, K>工具类型,作用是从类型T中剔除指定的属性K。但当T是undefined这类非对象类型时,由于undefined本身没有任何属性可供剔除,TypeScript的类型系统会将处理后的结果解析为any——这是一种兼容所有类型的兜底处理逻辑,导致该类型变量可以接收任意值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:40:29