Los objetos son con lo que te enfrentas trabajando como desarrollador de JavaScript, y no hace falta decir que eso también se aplica a TypeScript. TypeScript le proporciona múltiples formas de definir definiciones de tipos para propiedades de objetos. Veremos un par de ellos a lo largo de esta publicación, comenzando con ejemplos simples y pasando a algunas definiciones de tipos avanzadas.
Los objetos anidados en JavaScript son objetos que contienen otros objetos o matrices como propiedades. Esto permite la creación de estructuras de datos complejas que pueden representar entidades del mundo real de manera más efectiva.
En JavaScript, puedes anidar objetos dentro de otros objetos. Esto también se conoce como anidamiento de objetos o composición de objetos. El anidamiento de objetos le permite crear estructuras de datos complejas organizando objetos dentro de objetos.
Aquí hay un ejemplo sencillo de un objeto anidado que representa un perfil de usuario:
const userProfile = { username: "irena_doe", age: 30, contact: { email: "[email protected]", phone: { home: "123-456-7890", mobile: "987-654-3210" } }, preferences: { notifications: true, theme: "dark" } };
Por ejemplo:
El objeto userProfile tiene propiedades como nombre de usuario, edad y contacto.
La propiedad de contacto en sí es un objeto que contiene correo electrónico y teléfono.
La propiedad del teléfono es otro objeto anidado con números de casa y de móvil.
Para acceder a las propiedades dentro de objetos anidados, puede utilizar la notación de puntos o la notación de corchetes. Así es como puede acceder al número de teléfono móvil del usuario:
const mobileNumber = userProfile.contact.phone.mobile; console.log(mobileNumber); // Output: 987-654-3210
También puedes modificar propiedades anidadas. Por ejemplo, si desea cambiar la preferencia del tema:
userProfile.preferences.theme = "light"; console.log(userProfile.preferences.theme); // Output: light
Al trabajar con TypeScript, puede definir tipos de objetos anidados para garantizar la seguridad de tipos. Así es como puedes definir un tipo para el objeto userProfile:
type UserProfile = { username: string; age: number; contact: { email: string; phone: { home: string; mobile: string; }; }; preferences: { notifications: boolean; theme: string; }; }; const user: UserProfile = { username: "irena_doe", age: 30, contact: { email: "[email protected]", phone: { home: "123-456-7890", mobile: "987-654-3210" } }, preferences: { notifications: true, theme: "dark" } };
En este ejemplo de TypeScript, el tipo UserProfile define la estructura del objeto userProfile, asegurando que todas las propiedades estén escritas correctamente.
Veamos un ejemplo más complejo que representa un sistema de biblioteca, donde cada libro tiene varios detalles, incluido su autor, editorial y géneros.
Los objetos anidados se pueden definir utilizando la propia palabra clave tipo. TypeScript también puede abstraer las definiciones de tipo de un objeto anidado en definiciones de tipo. Las firmas de índice se pueden utilizar cuando no está seguro de cuántas propiedades tendrá un objeto pero está seguro del tipo de propiedades de un objeto
Así es como puedes estructurar un objeto anidado para este escenario:
const library = { name: "Central City Library", location: { address: { street: "123 Main St", city: "Central City", state: "CC", zip: "12345" }, coordinates: { latitude: 40.7128, longitude: -74.0060 } }, books: [ { title: "JavaScript: The Good Parts", author: { firstName: "Douglas", lastName: "Crockford" }, publishedYear: 2008, genres: ["Programming", "Technology"], availableCopies: 5 }, { title: "Clean Code", author: { firstName: "Robert", lastName: "C. Martin" }, publishedYear: 2008, genres: ["Programming", "Software Engineering"], availableCopies: 3 } ], totalBooks: function() { return this.books.length; } };
-Año de publicación: El año en que se publicó el libro.
-Géneros: conjunto de géneros a los que pertenece el libro.
-Copias disponibles: Un número que indica cuántas copias hay disponibles.
Puedes acceder y manipular este objeto anidado de varias maneras. Aquí se explica cómo encontrar al autor del primer libro:
const firstBookAuthor = library.books[0].author; console.log(`${firstBookAuthor.firstName} ${firstBookAuthor.lastName}`); // Output: Douglas Crockford
Para agregar un nuevo libro a la biblioteca:
library.books.push({ title: "The Pragmatic Programmer", author: { firstName: "Andrew", lastName: "Hunt" }, publishedYear: 1999, genres: ["Programming", "Career"], availableCopies: 4 });
También puede utilizar métodos definidos en el objeto. Por ejemplo, para obtener el número total de libros:
console.log(library.totalBooks()); // Output: 3
Este ejemplo ilustra cómo se pueden utilizar objetos anidados para crear una estructura más completa para representar datos complejos, como un sistema de biblioteca. Al organizar la información relacionada en conjunto, puede administrar fácilmente los datos e interactuar con ellos de manera significativa.
Para mejorar la organización y el mantenimiento del código, puede abstraer objetos anidados en tipos separados. Este enfoque le permite definir un tipo de Catering por separado y utilizarlo dentro del tipo de Tren. Así es como puedes hacer esto en TypeScript:
// Define the type for Caterer type Caterer = { name: string; // Name of the catering company address: string; // Address of the catering company phone: number; // Phone number of the catering company };
Definición del tipo de tren
A continuación, definiremos el tipo de Tren, que utilizará el tipo Caterer para su propiedad de catering.
// Define the type for Train type Train = { model: string; // Model of the train trainNumber: string; // Unique train number timeOfDeparture: Date; // Departure time timeOfArrival: Date; // Arrival time caterer: Caterer; // Reference to the Caterer type };
Ahora podemos crear una instancia del tipo Tren, incluidos los detalles del proveedor.
// Example of a Train object const train: Train = { model: "Shinkansen N700", trainNumber: "S1234", timeOfDeparture: new Date("2024-10-25T09:00:00Z"), timeOfArrival: new Date("2024-10-25T11:30:00Z"), caterer: { name: "Gourmet Train Catering", address: "123 Culinary Ave, Tokyo", phone: 1234567890, }, };
Al abstraer objetos anidados en tipos separados, puede mejorar la organización y claridad de su código TypeScript. Este enfoque permite una mejor reutilización y mantenibilidad, lo que facilita la gestión de estructuras de datos complejas.
Los objetos anidados son una característica poderosa en JavaScript que permite la organización de estructuras de datos complejas.
Al utilizar objetos anidados, puede crear representaciones de datos más significativas, lo que hace que su código sea más fácil de entender y mantener. Además, el uso de TypeScript puede ayudar a reforzar la estructura y la seguridad de tipos al trabajar con estos objetos complejos.
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