【问题标题】:What type is identified with `{}` in TypeScript在 TypeScript 中用 `{}` 标识什么类型
【发布时间】:2018-12-23 09:57:47
【问题描述】:

我使用类型 {} 来识别 TypeScript 中的对象,但它似乎允许除 nullundefined 之外的任何内容:

function foo(): {} {
  return "string";
}

上面的例子是合法的TypeScript,那么在使用{}的时候TypeScript中声明的是什么类型呢?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    {} 将与任何类型兼容(它没有必需的属性、索引或调用签名)。

    如果你想返回不是原始的东西,你可以使用object

    function foo(): object {
        return "string"; // error now 
    }
    

    object 类型记录在 here。另外,从PR 引入object 类型:

    对象类型等价于{}减去其他基本类型的可赋值性,也就是说:

    1. 任何其他基本类型都不能分配给对象
    2. 任何非基本类型都可以分配给对象
    3. 对象只能分配给{} 和任何对象

    【讨论】:

    • 谢谢。您能否指出我似乎错过的文档。
    • @doberkofler 添加了一些文档参考,希望对您有所帮助:)
    猜你喜欢
    • 2017-06-07
    • 2021-01-20
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2021-08-01
    • 2012-10-24
    • 2021-09-03
    • 2019-05-27
    相关资源
    最近更新 更多