types - 空对象类型和Object有什么区别?

标签 types typescript

我注意到 TypeScript 支持使用以下类型:

  • {}(在规范中称为空对象类型)
  • 对象

据我所知,它们似乎是等价的并且可以互换。它们之间有什么区别?

最佳答案

在 TypeScript 的上下文中,没有实际差异,但存在语义差异。 Object 的所有成员都隐含地存在于所有 对象中。

{} 表示没有自己的成员。 {} 仍将具有 Object 的所有成员。所以它们在 TypeScript 中是可以互换的。

// Extend ALL objects
interface Object{
    baz:number;
}

var foo:{} = {};
var bar:Object = {};

foo.baz = 123;
bar.baz = 123;

就我个人而言,我从来没有声明一个变量是其中之一。也许您应该使用 any,它与一切 兼容。

关于types - 空对象类型和Object有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21396195/

相关文章:

syntax - 如何将本质上是元组的类型视为 F# 中的元组

json - Postgres 9.3 中 JSON 和用户定义类型的比较

typescript - 为什么无法通过 getter [typescript] 获取父类(super class)的属性

visual-studio - 在启用脚本调试的情况下启动 Edge 浏览器时出错 : "Received breakpoint event referencing unknown breakpoint"

c - Go 的 interface{} 和 C 中的 void* 一样吗?

c - 使用为其他类型声明的内存

sql - 如何在一列中存储数组或多个值

typescript - SignalR 客户端在更新到核心 3.1 后不工作

javascript - 在 Typescript 应用程序中使用 Windows 运行时组件

javascript - 结果为 false 时重试订阅