想象我想做的事情
type empty = (no elements)
你可以试试
type empty = {}
但它不起作用,因为
{}
现在是 empty
的元素。
好的,那么这个怎么样:
type empty = null
嗯?不,现在
null
是 empty
的元素...
最后的手段,
type empty;
但是随后它会导致错误(至少对于 TS Playground 来说)!有没有办法制作一个空类型? (仅仅因为它可能没用并不意味着它很有趣!)
在 TypeScript 中创建空类型确实有点棘手,因为 TypeScript 的类型系统是基于结构的,这意味着即使是空对象
{}
也被视为具有属性的类型。
但是,您可以通过使用联合类型和没有可能值的类型来实现类似的效果。一种方法是使用
never
类型:
type Empty = never;
never
类型表示从未出现过的值的类型。它通常用于指示函数不会正常返回(例如,如果它总是抛出错误或进入无限循环)。在这种情况下,它用于创建一个没有可能值的类型。
根据此定义,
Empty
类型没有实例。例如,您可以使用它来指示函数永远不应该返回值:
function neverReturns(): Empty {
throw new Error("This function never returns");
}
这样,您就有效地创建了一个没有值的类型。