En TypeScript, cuando queremos definir un tipo de objeto, hay varias opciones concisas como 'Objeto', '{}' y 'objeto'. ¿Cuáles son las diferencias entre ellos?
Objeto (mayúsculas) describe propiedades comunes a todos los objetos JavaScipt. Está definido en el archivo lib.es5.d.ts que viene con la biblioteca TypeScript.
Como puede ver, incluye algunas propiedades comunes como toString(), valueOf(), etc.
Porque enfatiza solo aquellas propiedades que son comunes a los objetos JavaScript. Por lo tanto, puede asignarle objetos encajonables como cadena, booleano, número, bigint, símbolo, pero no al revés.
{} describe un objeto que no tiene miembros propios, lo que significa que TypeScript se quejará si intentas acceder a sus miembros de propiedad:
En el ejemplo de código anterior, podemos ver que {} y Objeto (en mayúsculas) tienen las mismas características. Es decir, solo puede acceder a aquellas propiedades que son comunes (incluso si la lógica del código JavaScript es correcta), se le pueden asignar todos los objetos encajonables, etc.
Esto se debe a que el tipo {} puede acceder a esas propiedades comunes a través de la cadena del prototipo y tampoco tiene propiedades propias. Por lo tanto, se comporta igual que el tipo Objeto (mayúscula). Pero representan conceptos diferentes.
objeto (en minúscula) significa cualquier tipo no primitivo, que se expresa en un código como este:
type PrimitiveType = | undefined | null | string | number | boolean | bigint | symbol; type NonPrimitiveType = object;
Esto significa que no se le pueden asignar todos los tipos no primitivos, y viceversa.
En el código fuente de muchas bibliotecas comunes, es posible que veamos Record
Si encuentra útil mi contenido, considere suscribirse. Envío un _ boletín semanal todos los domingos _ con las últimas actualizaciones de desarrollo web. ¡Gracias por su apoyo!
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3