Componentes
Los componentes son piezas de software autónomas diseñadas como cajas negras que reciben otros componentes (o ninguno) para realizar sus tareas. El objetivo principal es desacoplar secciones de código y maximizar la capacidad de prueba.
Estructura del Directorio
Todos los componentes DEBEN definirse dentro de un directorio dedicado que contenga al menos estos cuatro archivos:
component.ts- Contiene el código de implementación del componentetypes.ts- Contiene la interfaz del componente y los tipos expuestoserrors.ts- Contiene todas las clases de error exportadasindex.ts- Exporta la API pública del componente
Ejemplo de Estructura
src/
└── components/
└── my-component/
├── component.ts
├── types.ts
├── errors.ts
└── index.tsArchivo de Tipos
Los componentes se ajustan a una interfaz que define su API pública. Esta interfaz puede compartirse entre componentes intercambiables o utilizarse para entender los métodos que expone el componente.
Todos los componentes que tengan su propia interfaz DEBEN definirla en un types.ts archivo dentro del directorio del componente.
Otros tipos expuestos por el componente TAMBIÉN DEBEN colocarse en este archivo.
Ejemplo: types.ts
types.tsTipos Compartidos
Los tipos compartidos entre múltiples componentes, como interfaces comunes, DEBEN colocarse en un types.ts archivo en el directorio raíz del código fuente del proyecto (/src/types.ts).
Archivo del Componente
El archivo del componente contiene la función creadora del componente. Esta función sigue una convención específica de nombre y estructura.
Convención de Nomenclatura
Las funciones creadoras de componentes DEBEN llamarse como: create + ComponentName + Component
Ejemplo: createMyNewComponent
Firma de la Función
La función creadora DEBE:
Recibir un objeto components como primer parámetro que contenga todas las dependencias
Opcionalmente recibir parámetros adicionales de configuración
Devolver un objeto que contenga los métodos expuestos (públicos)
Estructura del componente
Al inicio de la función creadora del componente:
Extraer dependencias del objeto components
Inicializar variables comunes (p. ej., loggers, configuración)
Definir funciones auxiliares internas
Definir métodos públicos
Devolver la API pública
Ejemplo: component.ts
component.tsArchivo de Errores
El archivo de errores contiene clases de error personalizadas que un componente puede lanzar. Estos errores pueden usarse en otros componentes o controladores para identificar y manejar correctamente condiciones de error específicas.
Ejemplo: errors.ts
errors.tsBuenas Prácticas de Manejo de Errores
Crear clases de error específicas para diferentes condiciones de error
Incluir mensajes de error significativos
Establecer el
namepropiedad para que coincida con el nombre de la clase y facilitar la depuraciónDocumentar qué errores pueden lanzarse por cada método público
Archivo Índice
El archivo index sirve como el punto de entrada público para el componente, exportando solo lo que debe ser accesible para otras partes de la aplicación.
Ejemplo: index.ts
index.tsBuenas prácticas
Responsabilidad Única - Cada componente debe tener un propósito claro
Dependencias Explícitas - Todas las dependencias deben inyectarse a través del parámetro components
Inmutabilidad - Preferir estructuras de datos inmutables cuando sea posible
Manejo de errores - Usar clases de error personalizadas para diferentes condiciones de error
Registro (Logging) - Usar el logger para depuración y monitorización
Seguridad de tipos - Aprovechar plenamente el sistema de tipos de TypeScript
Documentación - Documentar métodos complejos y la lógica de negocio
Ciclo de Vida del Componente
Algunos componentes pueden necesitar realizar operaciones de configuración o limpieza. WKC proporciona métodos de ciclo de vida:
[START_COMPONENT]- Llamado cuando el componente empieza[STOP_COMPONENT]- Llamado cuando el componente se detiene
Vea la Adaptadores sección para ejemplos de componentes que usan métodos de ciclo de vida.
Última actualización