typescript - ¿Cuáles son las diferencias entre el tipo de objeto vacío y Object?
He notado que TypeScript admite el uso de los siguientes tipos:
{}(mencionado en las especificaciones como Tipo de Objeto Vacío)Object
Ambos parecen ser equivalentes e intercambiables hasta donde puedo decir. ¿Cuáles son las diferencias entre ellos?
Respuesta #1
Dentro del contexto de TypeScript, no hay una diferencia práctica pero sí hay una diferencia semántica. Todos los miembros del Object están presentes implícitamente en todos los objetos.
{} significa algo que no tiene miembros propios. {} todavía tendría todos los miembros de Object. Así que son intercambiables en TypeScript.
// Extend ALL objects
interface Object{
baz:number;
}
var foo:{} = {};
var bar:Object = {};
foo.baz = 123;
bar.baz = 123;
Personalmente, nunca he declarado una variable como una de estas. Tal vez deberías usar any, que es algo compatible con todo.
Respuesta #2
Siempre lo he entendido como que Object se refiere al tipo de objeto de JavaScript. Comúnmente se usa como {} o a veces new Object.
Creo que son equivalentes.
