2014-01-28 69 views

回答

0

我一直把它理解爲Object引用JavaScript對象類型。通常用作{}或有時new Object

我相信它們是等同的。

3

在TypeScript的上下文中,沒有實際的區別,但存在語義差異。 Object的所有成員都隱含在全部對象上。

{}意味着沒有它自己的成員。 {}仍然擁有Object的所有成員。所以它們在TypeScript中可以互換。

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

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

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

個人而言,我還沒有過聲明一個變量是其中之一。也許你應該使用any這是一種兼容的一切

+0

謝謝!你有什麼參考來證實這一點? – Sam

+1

有趣的是,您使用'any'而不是'Object'或'{}'。我可以理解,不使用'{}',因爲它看起來很有趣,它的語義看起來並不普遍有用。但是,例如,如果我期望提供一組名稱 - 值對作爲對象,則我發現使用'Object'更具可讀性。在這種情況下使用'any'對我來說可讀性較差,因爲從可讀性的角度來看,這意味着傳入'number'或其他原語是可以的。 – Sam

+1

如果您使用「{}」或「對象」,例如'foo:Object'你不能做'foo.yourProperty = 123'。 – basarat

-1

由於類型註釋{}Object都指向相同的類型,空對象類型。然而,{}也可以用作文字的對象,相當於new Object

相關問題