What are the differences between the empty object type and Object?

types, typescript

Solution

Within the context of TypeScript, there is no practical difference but there is a semantic difference. All the members of the `Object` are implicitly present on all objects.

`{}` means something that has no members of its own. {} would still have all the members of `Object`. So they are interchangeable in TypeScript.

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

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

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

Personally I haven't ever declared a variable to be one of these. Perhaps you should use `any` which is something that is compatible with everything.

Problem

I've noticed that TypeScript supports using the following types: - `{}` (referred to in the specs as Empty Object Type) - `Object` They both seem to be equivalent and interchangeable as far as I can tell. What are the differences between them?

Original source