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

如何在TypeScript中定义空类型?多种尝试均未成功

TypeScript中如何定义不包含任何元素的空类型?

你要的这种完全没有任何值能匹配的空类型,TypeScript原生就提供了解决方案:never类型。

为什么之前的尝试不对?

  • type empty = {}:这个类型其实允许所有非原始类型(严格模式下排除null和undefined),甚至带属性的对象也能赋值给它,因为TS里的{}不是“空对象”,而是“没有额外属性约束的对象类型”。
  • type empty = null:这个类型只包含null这一个有效值,显然不符合你要的“无任何元素”的需求。
  • type empty;:这是语法错误,TypeScript的类型定义必须有明确的赋值。

用never实现真正的空类型

never是TS的底层类型,代表永远不会存在的值的类型,任何值都无法赋值给never类型的变量,反过来never可以赋值给任意类型。

示例代码:

type Empty = never;

// 以下代码全部会报错,因为没有任何值能匹配never类型
const val1: Empty = {}; // 类型“{}”不能赋值给类型“never”
const val2: Empty = null; // 类型“null”不能赋值给类型“never”
const val3: Empty = 123; // 类型“number”不能赋值给类型“never”
const val4: Empty = () => {}; // 类型“() => void”不能赋值给类型“never”

never的常见场景还包括永远不会返回的函数,比如抛出错误的函数:

function throwFatalError(): never {
  throw new Error("程序终止,不会返回任何值");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:54:52