2014-01-28 9 views

Antwort

0

Ich habe es immer verstanden als Object bezieht sich auf den JavaScript-Objekttyp. Häufig verwendet als {} oder manchmal new Object.

Ich glaube, sie sind gleichwertig.

3

Im Zusammenhang mit TypeScript gibt es keinen praktischen Unterschied, aber es gibt einen semantischen Unterschied. Alle Mitglieder der Object sind implizit auf alle Objekte vorhanden.

{} bedeutet etwas, das keine eigenen Mitglieder hat. {} hätte immer noch alle Mitglieder von Object. Sie sind also in TypeScript austauschbar.

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

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

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

Persönlich habe ich nie erklärt eine Variable eine davon zu sein. Vielleicht sollten Sie any verwenden, was mit alles kompatibel ist.

+0

Danke! Haben Sie einen Hinweis darauf, dies zu bestätigen? – Sam

+1

Es ist interessant, dass Sie 'any' anstelle von' Object' oder '{}' verwenden. Ich kann verstehen, nicht '{}' zu verwenden, da es lustig aussieht und seine Semantik aus dem, was Sie gesagt haben, nicht allgemein nützlich erscheint. Ich finde es jedoch besser, "Object" zu verwenden, wenn ich beispielsweise eine Gruppe von Name-Wert-Paaren erwarte, die als Objekt bereitgestellt werden. Die Verwendung von 'any' in diesem Fall wäre für mich weniger leserlich, da dies im Hinblick auf die Lesbarkeit bedeuten würde, dass das Übergeben einer" Zahl "oder eines anderen Primitivs in Ordnung ist. – Sam

+1

Wenn Sie '{}' oder 'Object' z. 'foo: Object' Sie können' foo.yourProperty = 123' nicht tun. – basarat

-1

Als Typenannotationen sowohl {} und Object beziehen sich auf den gleichen Typ, der Leere Objekttyp. {} kann jedoch auch als Objekt dienen Literal, entspricht new Object.

Verwandte Themen