空对象类型和对象之间有什么区别?

时间:2014-01-28 03:19:11

标签: types typescript

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

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

就我所知,它们似乎都是等同的,可以互换的。它们之间有什么区别?

3 个答案:

答案 0 :(得分:3)

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

{}表示没有自己成员的东西。 {}仍会拥有Object的所有成员。因此它们在TypeScript中可以互换。

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

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

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

我个人没有声明变量是其中之一。也许您应该使用与{em>所有内容兼容的any

答案 1 :(得分:0)

我一直都认为Object是指JavaScript对象类型。通常用作{}或有时new Object

我相信它们是等价的。

答案 2 :(得分:-1)

作为类型注释{}Object都指向相同的类型,即空对象类型。但是,{}也可以用作对象文字,相当于new Object