如何只接受一个空对象?

时间:2019-07-10 13:45:43

标签: typescript

const x: {} = {a:1} 

上面的代码编译。我如何只接受一个空对象:{}


  • 我知道{}接受包含多个key的任何对象。我正在寻找一种声明仅接受对象而没有任何键的类型的方法。

2 个答案:

答案 0 :(得分:2)

您可以使用never来强制对象为空:

type Empty = { [key: string]: never }

查看打字稿运动场:http://www.typescriptlang.org/play/#code/C4TwDgpgBAogtmUUC8UDeUDaBrCIBcUAzsAE4CWAdgOYC6hlEAbhKVAL4DcAUNwMYB7SiSgAPQvEQgU6LvyEiCsBElQZxUAIwdOQA

答案 1 :(得分:1)

我认为这是不可能的,因为即使在强类型语言中,您也不能限制接受更多派生的类型。

您在这里基本上是(在幕后)说x应该至少是{}类型。

因此,我在这里看到一些选择:

  • 返回nullundefined
  • 如果失败则抛出异常(在这种情况下,这是非常标准的)
  • 具有一些Option类型,该类型要么具有值,要么不具有值,这是解决返回值或失败的问题的一种更实用的方法。 This has more info on the topic.

编辑:Phillip提供了实现方法,所以我的猜测是错误的。但是我仍然不建议您尽可能使用它。