Contenido del curso
Singleton
Factory
Abstract Factory
- 12

Qué es el patrón Abstract Factory
03:39 min - 13

Patrones de Diseño: Abstract Factory en Producción de Coches
04:20 min - 14

Implementación del patrón Abstract Factory en JavaScript
10:46 min - 15

Diferencias entre JavaScript y TypeScript en el patrón Abstract Factory
03:33 min - 16

Patrón Abstract Factory: Ventajas y Desventajas
06:00 min
Builder
- 17

Patrón Builder para crear objetos complejos
07:39 min - 18

Patrón Builder: Análisis de Diagrama y Clases Relacionadas
04:46 min - 19

Implementación del Patrón Builder en Producción de Coches
27:39 min - 20

Comparación del Patrón Builder en JavaScript vs TypeScript
03:38 min - 21

Patrón Builder: Ventajas, Desventajas y Aplicaciones Prácticas
07:00 min
Prototype
- 22

Patrón Prototype: Clonación de Objetos en Diseño de Software
03:36 min - 23

Diagrama UML del patrón Prototype explicado
01:55 min - 24

Implementación del Patrón Prototype en JavaScript
07:14 min - 25

Comparación de Prototype en JavaScript y TypeScript
06:08 min - 26

Patrón Prototype: Ventajas y Desafíos en Diseño de Software
05:43 min
Conclusiones
Singleton en TypeScript vs JavaScript
Resumen
El patrón Singleton en TypeScript permite implementar la teoría tal como fue concebida originalmente, gracias a palabras reservadas como private que JavaScript no soporta de forma nativa. Si vienes de Java o C++, esta diferencia te resultará familiar y útil para escribir código más predecible.
¿Qué cambia al implementar Singleton en TypeScript frente a JavaScript?
La diferencia clave está en el control de acceso. En TypeScript puedes marcar el constructor como private, algo que JavaScript no permite, y eso bloquea cualquier intento de instanciar la clase con new fuera de su propio código.
¿Qué hace la palabra reservada private en TypeScript? Restringe el acceso a un atributo, método o constructor para que solo sea utilizable dentro de la declaración de la clase. Si intentas llamarlo desde fuera, el compilador lanza un error.
El resto del código se mantiene bastante similar entre ambos lenguajes. La estructura del Singleton, la lógica de retornar una única instancia y el manejo del estado interno funcionan igual. Lo que se suma en TypeScript es la declaración explícita de tipos.
¿Cómo se declara getInstance con tipos en TypeScript?
En la implementación tipada, el método getInstance recibe un parámetro version de tipo cadena y retorna una instancia de la clase, por ejemplo SingletonTS. Esa firma le dice al compilador exactamente qué esperar y qué devolver, lo que reduce errores antes de ejecutar.
Cuando intentas crear una variable como singleton4 usando el operador new sobre una clase con constructor privado, TypeScript te muestra el error: el constructor de la clase es privado y solo es accesible dentro de la declaración de la clase. Es justo el comportamiento que la teoría del patrón describe.
¿Por qué TypeScript se acerca más a la teoría de los patrones de diseño?
TypeScript es un lenguaje orientado a tipos, lo que lo aproxima a lenguajes fuertemente tipados como Java o C++. Esa cercanía importa porque la mayoría de la literatura sobre patrones de diseño se escribió pensando en ese tipo de lenguajes.
Algunas palabras reservadas que TypeScript hace visibles y que aportan claridad al implementar patrones son:
- private, para ocultar atributos, métodos o constructores.
- public, para exponer miembros de forma explícita.
- interface, para definir contratos.
- implements, para indicar que una clase cumple una interfaz.
Estas piezas hacen que la intención del código sea más legible. Cuando alguien lee tu Singleton en TypeScript, ve de inmediato qué se puede tocar desde fuera y qué no.
¿TypeScript es más recomendable que JavaScript para patrones de diseño? Quizás sí, porque sus palabras reservadas hacen más explícita la intención del patrón. Pero JavaScript no es obsoleto; la elección depende de las herramientas y del contexto del proyecto.
¿Cuándo conviene quedarse en JavaScript?
No todo proyecto necesita TypeScript. Si tu equipo, tu stack o tu entorno de ejecución ya están afinados en JavaScript, puedes implementar Singleton igual, asumiendo que el control de acceso al constructor se hará por convención y no por compilador.
La idea es adaptarte a la situación y usar lo que tengas disponible. Lo importante es entender la teoría del patrón y traducirla con las herramientas del lenguaje que estés usando.
¿Cómo aprovechar el tipado para reforzar el patrón Singleton?
Más allá del private en el constructor, puedes especificar el tipo de cada atributo y el tipo de retorno de cada método. Eso convierte la clase en un contrato verificable.
Por ejemplo, al declarar que getInstance retorna SingletonTS, le aseguras a quien consume tu código que siempre recibirá una instancia válida de esa clase, no undefined ni un objeto distinto. Y al tipar version como cadena, evitas que alguien pase un número por error.
Estos pequeños detalles agregan mucho valor cuando el proyecto crece o cuando varias personas trabajan sobre la misma base de código. El compilador se vuelve tu primer revisor.
¿Te gustaría ver un curso completo de patrones de diseño exclusivamente en TypeScript? Cuéntame en los comentarios qué patrones te interesan más y cómo te imaginas la estructura ideal para profundizar.