sábado, 12 de septiembre de 2026

Capítulo 008. ¿Qué es TypeScript?

 Introducción

Durante el desarrollo de aplicaciones Angular utilizaremos TypeScript como lenguaje de programación principal. De hecho, TypeScript es el lenguaje recomendado y utilizado por defecto en los proyectos Angular modernos.

Antes de comenzar a trabajar con Angular, es importante comprender qué es TypeScript, cuáles son sus ventajas y por qué se ha convertido en una herramienta fundamental para el desarrollo de aplicaciones de gran escala.


El problema de JavaScript

JavaScript es un lenguaje de programación flexible y fácil de aprender. Sin embargo, una de sus características es que utiliza tipado dinámico, lo que significa que no es necesario declarar el tipo de dato de una variable.

Por ejemplo:

let nombre = "Felipe";

En este caso, no se especifica explícitamente que nombre es una cadena de texto (string). JavaScript simplemente lo deduce a partir del valor asignado.

Aunque esta flexibilidad puede resultar conveniente, también puede provocar errores difíciles de detectar en aplicaciones grandes.

Consideremos el siguiente ejemplo:

let nombre = "Felipe";

let numero = 2;


function sumar(a, b) {

return a + b;

}


let suma = sumar(nombre, numero);


console.log(suma);

La función sumar parece diseñada para sumar números. Sin embargo, JavaScript permite enviar cualquier tipo de dato como argumento, incluyendo cadenas de texto.

Como consecuencia, pueden producirse comportamientos inesperados que generen errores difíciles de localizar, especialmente en aplicaciones con miles de líneas de código.


¿Qué es TypeScript?

TypeScript es un lenguaje de programación desarrollado por Microsoft que se basa en JavaScript y añade características adicionales para mejorar la productividad y la calidad del código.

Se describe como un superconjunto tipado de JavaScript (typed superset of JavaScript), lo que significa que:

Todo código JavaScript válido también es código TypeScript válido.

Esto facilita enormemente la adopción de TypeScript, ya que no es necesario reaprender completamente un nuevo lenguaje.


Tipado estático

La característica más importante de TypeScript es su sistema de tipado estático.

Gracias a este sistema podemos indicar explícitamente qué tipo de dato esperamos utilizar en:

  • Variables.

  • Parámetros de funciones.

  • Valores de retorno.

  • Propiedades de clases.

  • Objetos e interfaces.

Por ejemplo:

let nombre: string = "Felipe";

let numero: number = 2;


function sumar(a: number, b: number): number {

return a + b;

}

En este caso:

  • nombre debe contener un valor de tipo string.

  • numero debe contener un valor de tipo number.

  • Los parámetros a y b deben ser números.

  • La función debe devolver un número.


Detección temprana de errores

Supongamos que intentamos utilizar la función anterior de manera incorrecta:

let nombre: string = "Felipe";

let numero: number = 2;


let suma: number = sumar(nombre, numero);

TypeScript detectará inmediatamente un error similar al siguiente:

Argument of type 'string' is not assignable to parameter of type 'number'.

Esto sucede porque se está enviando una cadena de texto donde se esperaba un número.

La ventaja es que el error se detecta durante el desarrollo, antes de ejecutar la aplicación.

En proyectos pequeños este beneficio puede parecer menor, pero en aplicaciones empresariales grandes permite ahorrar una enorme cantidad de tiempo al identificar errores tempranamente.


Inferencia de tipos

Aunque TypeScript permite declarar tipos explícitamente, muchas veces no es necesario hacerlo.

Por ejemplo:

let nombre = "Felipe";

TypeScript es capaz de inferir automáticamente que la variable nombre es de tipo string.

Este proceso se conoce como inferencia de tipos (Type Inference).

Gracias a ello, es posible escribir código más limpio sin perder las ventajas del tipado estático.


Compatibilidad con JavaScript

Una de las mayores ventajas de TypeScript es su compatibilidad total con JavaScript.

Si una aplicación está desarrollada completamente en JavaScript, puede comenzar a utilizar TypeScript sin necesidad de realizar grandes modificaciones iniciales.

Por ejemplo:

let mensaje = "Hola Mundo";


function saludar(nombre) {

return "Hola " + nombre;

}

El código anterior es válido tanto en JavaScript como en TypeScript.

Posteriormente, el desarrollador puede ir agregando tipos gradualmente para obtener mayores beneficios.

Esta compatibilidad facilita la migración de proyectos existentes.


Características modernas del lenguaje

Además del sistema de tipos, TypeScript incorpora características modernas que ayudan a los desarrolladores a escribir código más robusto y expresivo.

Entre ellas se encuentran:

  • Interfaces.

  • Enumeraciones (Enums).

  • Genéricos (Generics).

  • Decoradores.

  • Tipos avanzados.

  • Mejor soporte para programación orientada a objetos.

Muchas de estas características permiten diseñar aplicaciones más organizadas y fáciles de mantener.


Compilación de TypeScript

Es importante entender que los navegadores no ejecutan código TypeScript directamente.

Antes de ejecutar una aplicación, el código TypeScript debe convertirse a JavaScript mediante un proceso conocido como compilación o transpilación.

El flujo de trabajo es el siguiente:

TypeScript

Compilación

JavaScript

Navegador

Durante esta compilación es cuando TypeScript analiza el código y detecta posibles errores de tipos.

Gracias a este mecanismo, los desarrolladores pueden aprovechar las ventajas de TypeScript mientras mantienen total compatibilidad con los navegadores modernos.


¿Por qué Angular utiliza TypeScript?

Angular adopta TypeScript como lenguaje principal porque ofrece herramientas que facilitan el desarrollo de aplicaciones complejas.

Algunos beneficios son:

  • Detección temprana de errores.

  • Mejor autocompletado en el editor.

  • Navegación más sencilla por el código.

  • Refactorización más segura.

  • Mayor productividad.

  • Mejor mantenibilidad en proyectos grandes.

Estas ventajas son especialmente importantes en aplicaciones empresariales donde participan varios desarrolladores y el código debe mantenerse durante años.


TypeScript en este curso

A lo largo de este curso trabajaremos con TypeScript de forma natural como parte del desarrollo de aplicaciones Angular.

No es necesario tener experiencia previa con el lenguaje, ya que utilizaremos principalmente sus características fundamentales, incluyendo:

  • Variables tipadas.

  • Funciones.

  • Clases.

  • Interfaces.

  • Decoradores básicos.

Los conceptos avanzados se irán introduciendo progresivamente conforme sean necesarios para el desarrollo de la aplicación.


Resumen

TypeScript es un lenguaje desarrollado por Microsoft que extiende JavaScript mediante un sistema de tipos estáticos y otras características orientadas a mejorar la productividad y la calidad del código. Gracias a la detección temprana de errores, la compatibilidad con JavaScript y sus potentes herramientas de desarrollo, TypeScript se ha convertido en el estándar para trabajar con Angular.

Durante el resto del curso utilizaremos TypeScript como lenguaje principal para construir el frontend de nuestra aplicación, aprovechando sus ventajas para desarrollar código más seguro, mantenible y fácil de entender.


viernes, 4 de septiembre de 2026

Capítulo 007. Introducción a ASP.NET Core

Introducción

ASP.NET Core es un framework de desarrollo web de código abierto creado por Microsoft que permite construir aplicaciones web modernas, servicios web, APIs REST y aplicaciones empresariales de alto rendimiento.

Una de sus principales características es que es multiplataforma, lo que significa que puede ejecutarse en distintos sistemas operativos, como:

  • Windows

  • Linux

  • macOS

Esta flexibilidad permite desarrollar y desplegar aplicaciones en diversos entornos sin depender de una plataforma específica.


¿Qué significa ASP?

ASP proviene de Active Server Pages, una tecnología diseñada para crear sitios web dinámicos.

A diferencia de los sitios estáticos, donde el contenido es siempre el mismo para todos los usuarios, un sitio dinámico puede generar información diferente según diversos factores, por ejemplo:

  • El usuario que ha iniciado sesión.

  • Los datos almacenados en una base de datos.

  • La fecha y hora actuales.

  • La información enviada desde formularios.

  • Las reglas de negocio de la aplicación.

Gracias a ello, es posible construir aplicaciones web interactivas que respondan de manera inteligente a las acciones de los usuarios.


¿Cuál es el objetivo de ASP.NET Core?

La misión principal de ASP.NET Core es simplificar el desarrollo de aplicaciones web proporcionando funcionalidades que suelen ser necesarias en la mayoría de los proyectos.

En lugar de implementar estas características desde cero en cada aplicación, los desarrolladores pueden aprovechar las herramientas que el framework ofrece de forma integrada.

Esto permite:

  • Reducir tiempos de desarrollo.

  • Evitar la duplicación de esfuerzos.

  • Mantener estándares de calidad.

  • Mejorar la mantenibilidad del código.

  • Incrementar la productividad del equipo.

En otras palabras, ASP.NET Core ayuda a los desarrolladores a concentrarse en la lógica de negocio de la aplicación en lugar de resolver problemas comunes ya abordados por el framework.


Características principales de ASP.NET Core

ASP.NET Core incorpora un amplio conjunto de funcionalidades listas para utilizarse en aplicaciones web modernas.

Sistema de ruteo

El sistema de Routing permite determinar qué código debe ejecutarse cuando se recibe una petición HTTP.

Por ejemplo, una solicitud a una determinada URL puede dirigirse automáticamente a una acción específica dentro de un controlador o endpoint.

Esto facilita la construcción de APIs y aplicaciones web organizadas y fáciles de mantener.

Inyección de dependencias

ASP.NET Core incluye un sistema de Inyección de Dependencias (Dependency Injection) integrado de forma nativa.

Esta característica permite desacoplar los distintos componentes de la aplicación y aplicar principios fundamentales de diseño de software.

Gracias a la inyección de dependencias:

  • Las clases dependen de abstracciones en lugar de implementaciones concretas.

  • El código es más fácil de probar.

  • Se mejora la reutilización de componentes.

  • Se facilita el mantenimiento de la aplicación.

Más adelante en el curso se profundizará en este concepto, ya que constituye una pieza fundamental de la arquitectura moderna en .NET.

Administración de usuarios y autenticación

ASP.NET Core proporciona herramientas que permiten implementar funcionalidades relacionadas con la gestión de usuarios, tales como:

  • Registro de usuarios.

  • Inicio de sesión.

  • Recuperación de contraseñas.

  • Control de acceso.

  • Autenticación y autorización.

Estas capacidades reducen significativamente el trabajo necesario para incorporar mecanismos de seguridad en una aplicación.

Desarrollo de APIs REST

ASP.NET Core es ampliamente utilizado para la creación de APIs REST, que posteriormente pueden ser consumidas por aplicaciones frontend desarrolladas con tecnologías como Angular, React o Vue.

Esta separación entre frontend y backend es una de las arquitecturas más utilizadas en el desarrollo moderno de aplicaciones web.


Rendimiento

Uno de los aspectos más destacados de ASP.NET Core es su excelente rendimiento.

Con cada nueva versión de .NET, Microsoft introduce optimizaciones que mejoran la velocidad de ejecución y el consumo de recursos.

En muchos casos, simplemente actualizar una aplicación a una versión más reciente del framework puede generar mejoras de rendimiento sin necesidad de modificar el código existente.

Esta evolución constante ha convertido a ASP.NET Core en una de las plataformas más rápidas para el desarrollo de aplicaciones web y APIs empresariales.


ASP.NET vs ASP.NET Core

Es importante diferenciar entre ASP.NET y ASP.NET Core, ya que son tecnologías distintas.

ASP.NET

ASP.NET fue el framework web tradicional de Microsoft.

Sus principales características eran:

  • Funcionaba únicamente en Windows.

  • Dependía del .NET Framework clásico.

  • Estaba orientado principalmente a entornos Microsoft.

ASP.NET Core

ASP.NET Core representa la evolución moderna de la plataforma.

Entre sus ventajas destacan:

  • Compatibilidad con Windows, Linux y macOS.

  • Mayor rendimiento.

  • Arquitectura moderna y modular.

  • Código abierto.

  • Mejor integración con contenedores y servicios en la nube.

  • Desarrollo activo y soporte continuo.

Por estas razones, ASP.NET Core es la tecnología recomendada para nuevos proyectos y desarrollos web.


Lenguajes compatibles con ASP.NET Core

ASP.NET Core permite utilizar distintos lenguajes compatibles con la plataforma .NET.

Sin embargo, el lenguaje más utilizado y recomendado es C# (C Sharp), que será el utilizado a lo largo de este curso.


Introducción a C#

C# es un lenguaje de programación moderno, potente y versátil que combina características de la programación orientada a objetos y la programación funcional.

Programación orientada a objetos

C# permite trabajar con conceptos fundamentales como:

  • Clases.

  • Objetos.

  • Herencia.

  • Interfaces.

  • Encapsulamiento.

  • Polimorfismo.

Estos elementos facilitan la construcción de aplicaciones organizadas, escalables y fáciles de mantener.

Características funcionales

Además de sus capacidades orientadas a objetos, C# incorpora varias características procedentes de la programación funcional, entre ellas:

  • Funciones anónimas.

  • Expresiones lambda.

  • Métodos de extensión.

  • Consultas LINQ.

  • Delegados.

Estas herramientas permiten escribir código más expresivo y eficiente.

Durante el curso se estudiarán estos conceptos de manera práctica conforme sean necesarios para el desarrollo de la aplicación.


Resumen

ASP.NET Core es un framework moderno y multiplataforma diseñado para el desarrollo de aplicaciones web, servicios y APIs de alto rendimiento. Su amplio conjunto de funcionalidades integradas, incluyendo ruteo, inyección de dependencias, autenticación y soporte para APIs REST, permite a los desarrolladores crear soluciones robustas sin necesidad de reinventar elementos comunes de la infraestructura de una aplicación.

Además, gracias al uso de C# como lenguaje principal, ASP.NET Core ofrece una combinación de productividad, rendimiento y mantenibilidad que lo ha convertido en una de las tecnologías más utilizadas para el desarrollo backend empresarial.

En el próximo capítulo profundizaremos en la evolución de la plataforma .NET y entenderemos cómo ASP.NET Core se integra dentro del ecosistema moderno de desarrollo de Microsoft.


sábado, 29 de agosto de 2026

Capítulo 006. Anatomía de una Aplicación Angular Standalone

Introducción

Las aplicaciones Angular están compuestas por diversos elementos que trabajan conjuntamente para ofrecer una experiencia de usuario dinámica, organizada y fácil de mantener. Comprender estos elementos es fundamental para desarrollar aplicaciones modernas siguiendo las mejores prácticas de la plataforma.

En las versiones actuales de Angular, especialmente cuando se trabaja con el enfoque standalone, los componentes se convierten en el eje principal de la aplicación, eliminando la dependencia de los tradicionales NgModules.

Los elementos más importantes que encontraremos en una aplicación Angular son:

  • Componentes (Components)

  • Directivas (Directives)

  • Pipes

  • Servicios (Services)

  • Ruteo (Routing)

En este capítulo revisaremos la función de cada uno de ellos y cómo contribuyen al funcionamiento de una aplicación Angular.


Componentes

Los componentes constituyen la unidad fundamental de construcción en Angular. Representan las distintas partes visuales de la aplicación con las que el usuario puede interactuar.

Toda aplicación Angular contiene al menos un componente, conocido como componente raíz (Root Component), a partir del cual se estructura el resto de la aplicación.

¿Qué es un componente?

Un componente es una clase de TypeScript decorada con el decorador @Component, que permite a Angular reconocerla como un componente válido.

Cada componente está formado por:

  • Una clase que contiene la lógica de negocio y los datos.

  • Una plantilla HTML (template) que define la interfaz visual.

  • Opcionalmente, un archivo de estilos CSS, SCSS o similar.

Responsabilidades de un componente

Dentro de un componente podemos:

  • Definir variables que contienen datos.

  • Implementar métodos o funciones.

  • Gestionar eventos generados por el usuario.

  • Controlar la información mostrada en la interfaz.

Event Binding

El Event Binding permite ejecutar código cuando ocurre una acción por parte del usuario.

Por ejemplo:

  • Hacer clic en un botón.

  • Escribir en un campo de texto.

  • Seleccionar una opción de una lista.

Cuando se produce el evento, Angular ejecuta un método definido dentro del componente.

Property Binding

El Property Binding permite enviar información desde la clase del componente hacia la plantilla HTML.

Gracias a esta funcionalidad, es posible mostrar dinámicamente datos almacenados en variables o resultados obtenidos mediante cálculos realizados en el componente.

De esta forma, la interfaz se mantiene sincronizada con el estado de la aplicación.


Directivas

Las directivas son instrucciones que permiten modificar la apariencia o el comportamiento de los elementos HTML.

Una forma sencilla de entenderlas es pensar que las directivas amplían las capacidades nativas de HTML, agregando funcionalidades específicas proporcionadas por Angular.

Tipos de directivas

Angular clasifica las directivas en tres categorías principales:

1. Componentes

Los componentes son, técnicamente, un tipo especial de directiva.

Además de modificar el comportamiento, incluyen una plantilla HTML propia y representan una porción completa de la interfaz de usuario.

2. Directivas estructurales

Las directivas estructurales modifican la estructura del DOM (Document Object Model).

Estas directivas pueden:

  • Agregar elementos.

  • Eliminar elementos.

  • Reemplazar elementos existentes.

Un ejemplo clásico es *ngIf, que permite mostrar u ocultar contenido en función de una condición.

Por ejemplo:

  • Mostrar un mensaje únicamente cuando el usuario haya iniciado sesión.

  • Ocultar determinada información si no existen datos disponibles.

3. Directivas de atributo

Las directivas de atributo modifican la apariencia o el comportamiento de elementos ya existentes.

No alteran la estructura del DOM, sino que cambian características de los elementos sobre los que se aplican.

Un ejemplo común es ngClass, que permite agregar o eliminar clases CSS dinámicamente según determinadas condiciones.

Esto resulta especialmente útil para:

  • Resaltar errores de validación.

  • Aplicar estilos condicionales.

  • Modificar la apariencia según el estado de la aplicación.


Pipes

Los Pipes permiten transformar datos antes de mostrarlos al usuario.

Su objetivo principal es presentar la información en un formato más adecuado o fácil de interpretar.

Casos de uso comunes

Los pipes pueden utilizarse para:

  • Formatear fechas.

  • Formatear monedas.

  • Convertir texto a mayúsculas o minúsculas.

  • Mostrar porcentajes.

  • Transformar valores personalizados.

Por ejemplo, una fecha almacenada en formato técnico puede mostrarse en un formato más amigable para el usuario final.

Este mecanismo ayuda a separar la lógica de presentación de la lógica de negocio.


Servicios

Los servicios se utilizan para encapsular lógica o datos que no pertenecen específicamente a un componente.

Su principal objetivo es promover la reutilización de código y mantener la aplicación organizada.

¿Por qué utilizar servicios?

Cuando una funcionalidad debe ser utilizada por varios componentes, no resulta conveniente duplicar el mismo código en cada uno de ellos.

En lugar de eso, se crea un servicio que centraliza dicha funcionalidad.

Posteriormente, los componentes que necesiten utilizarla pueden acceder al servicio mediante el sistema de inyección de dependencias de Angular.

Ejemplos de uso

Los servicios suelen utilizarse para:

  • Consumir APIs REST.

  • Compartir información entre componentes.

  • Gestionar autenticación y autorización.

  • Implementar reglas de negocio.

  • Centralizar operaciones de acceso a datos.

Este enfoque mejora considerablemente la mantenibilidad de la aplicación y reduce la duplicidad de código.


Ruteo

El ruteo (Routing) es el mecanismo que permite la navegación dentro de una aplicación Angular.

Gracias al sistema de rutas, Angular puede determinar qué vista o componente debe mostrarse basándose en la URL actual del navegador.

¿Cómo funciona?

Cuando el usuario accede a una dirección específica, Angular analiza la ruta y muestra el componente correspondiente.

Por ejemplo:

  • /inicio → Página principal.

  • /productos → Catálogo de productos.

  • /contacto → Página de contacto.

Aunque para el usuario parece que navega entre distintas páginas, internamente Angular suele reemplazar u ocultar componentes dentro de una única aplicación cargada en el navegador.

Esta característica es la base de las aplicaciones conocidas como Single Page Applications (SPA).

Beneficios del ruteo

El sistema de ruteo proporciona varias ventajas:

  • Navegación fluida entre vistas.

  • URLs amigables y compartibles.

  • Compatibilidad con los botones Atrás y Adelante del navegador.

  • Soporte para parámetros de ruta.

  • Soporte para query strings.

  • Carga dinámica de componentes y módulos.

Todo ello contribuye a una experiencia de usuario más intuitiva y profesional.


Resumen

Una aplicación Angular Standalone se construye alrededor de varios elementos fundamentales:

  • Los componentes representan la interfaz de usuario y contienen la lógica asociada a cada vista.

  • Las directivas amplían las capacidades de HTML y permiten modificar la estructura o comportamiento de los elementos.

  • Los pipes transforman datos para presentarlos de forma más amigable.

  • Los servicios encapsulan lógica reutilizable y facilitan el intercambio de información entre componentes.

  • El ruteo permite implementar la navegación dentro de la aplicación y controlar qué contenido se muestra según la URL.

Dominar estos elementos es esencial para desarrollar aplicaciones Angular modernas, organizadas y fáciles de mantener. En los próximos capítulos profundizaremos en cada uno de ellos y aprenderemos a crear nuestras propias implementaciones para resolver necesidades reales de negocio.


Capítulo 008. ¿Qué es TypeScript?