En TypeScript, puedes combinar los enums, types e interfaces de varias formas para crear estructuras de datos complejas y precisas.
Enums en interfaces
Podríamos asociar el tipado de una de las propiedades de un interface
con un enum
:
enum Color {
Negro,
Blanco,
Morado
}
interface FiguraGeometrica {
nombre: string;
color: Color;
}
const rectangulo: FiguraGeometrica = {
nombre: "rectángulo",
color: Color.Morado
};
Types en Interfaces
En los atributos de un interface
podríamos usar un type
para dar un tipado customizable:
type Coordenadas = [number, number];
interface Punto {
ubicacion: Coordenadas;
etiqueta: string;
}
const punto: Punto = {
ubicacion: [10, 5],
etiqueta: "Punto A"
};
Combinación de Enums y Types
En TypeScript, también es posible juntar los enums y types. Por ejemplo, podemos declarar un type
que tenga la estructura de objeto en el que una de sus propiedades es un valor del set de opciones perteneciente a un enum
:
enum Size {
Chico = "S",
Mediano = "M",
Grande = "L"
}
type Producto = {
name: string;
size: Size; // 👈 Enum
};
const camiseta: Producto = {
name: "Camiseta",
size: Size.Mediano
};
Interfaces, enums y types juntos
Es posible usar enums y types dentro de un interface
para crear una sola estructura compleja para poder generar objetos con información más detallada y precisa:
enum TipoVehiculo {
Automóvil,
Motocicleta
}
type Especificaciones = {
marca: string;
modelo: string;
año: number;
};
interface Vehiculo {
tipo: TipoVehiculo;
especificaciones: Especificaciones;
}
const vehiculo: Vehiculo = {
tipo: TipoVehiculo.Automóvil,
especificaciones: {
marca: "Toyota",
modelo: "Corolla",
año: 2020
}
};
Al combinar estas estructuras, tienes la capacidad de producir estructuras de datos más complejas y establecer tipos más detallados para tus objetos y variables. Esto da como resultado un código más claro, seguro y fácil de mantener.
Contribución creada por: Martín Álvarez (Platzi Contributor).
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?