你能在打字稿中创建一个空类型吗?

问题描述 投票:0回答:1

想象我想做的事情

type empty = (no elements)

你可以试试

type empty = {}

但它不起作用,因为

{}
现在是
empty
的元素。

好的,那么这个怎么样:

type empty = null

嗯?不,现在

null
empty
的元素...

最后的手段,

type empty;

但是随后它会导致错误(至少对于 TS Playground 来说)!有没有办法制作一个空类型? (仅仅因为它可能没用并不意味着它很有趣!)

typescript
1个回答
0
投票

在 TypeScript 中创建空类型确实有点棘手,因为 TypeScript 的类型系统是基于结构的,这意味着即使是空对象

{}
也被视为具有属性的类型。

但是,您可以通过使用联合类型和没有可能值的类型来实现类似的效果。一种方法是使用

never
类型:

type Empty = never;

never
类型表示从未出现过的值的类型。它通常用于指示函数不会正常返回(例如,如果它总是抛出错误或进入无限循环)。在这种情况下,它用于创建一个没有可能值的类型。

根据此定义,

Empty
类型没有实例。例如,您可以使用它来指示函数永远不应该返回值:

function neverReturns(): Empty {
    throw new Error("This function never returns");
}

这样,您就有效地创建了一个没有值的类型。

© www.soinside.com 2019 - 2024. All rights reserved.