Conceptos de TypeScript

Programación Básica en TypeScript

Colecciones

Descripción: Estructuras de datos que agrupan elementos.

Ejemplos: Arrays, mapas y conjuntos.

Uso: Facilitan la manipulación y el almacenamiento de múltiples valores.

Expresiones Lambda

Descripción: Funciones anónimas con una sintaxis más corta.

Sintaxis: (parametros) => { cuerpo de la función }

Uso: Simplifican la escritura de funciones y son útiles para callbacks.

Tipos

Descripción: Definiciones de las diferentes formas de datos que una variable puede contener.

Ejemplos: string, number, boolean, any, void, null, undefined.

Uso: Aumentan la seguridad del código al evitar errores de tipo.

Programación Avanzada en TypeScript

Objetos y Clases

Descripción: Estructuras que representan entidades con propiedades y métodos.

class Persona {
  nombre: string;
  constructor(nombre: string) {
    this.nombre = nombre;
  }
  saludar(): string {
    return `Hola, ${this.nombre}`;
  }
}

Uso: Facilitan la programación orientada a objetos, modelando entidades reales y sus comportamientos.

Patrones de Diseño

Singleton

Descripción: El patrón Singleton es un patrón de diseño que asegura que una clase tenga solo una instancia y proporciona un punto de acceso global a ella. Es útil cuando se necesita un control estricto sobre la instancia de una clase, como en el caso de la gestión de recursos compartidos (por ejemplo, una conexión a una base de datos).

class Singleton {
  private static instancia: Singleton;
  private constructor() {}
  static getInstancia() {
    if (!Singleton.instancia) {
      Singleton.instancia = new Singleton();
    }
    return Singleton.instancia;
  }
}
     class Singleton {
  // Propiedad estática privada para almacenar la instancia única
  private static instance: Singleton;

  // Propiedad de ejemplo
  private value: number;

  // Constructor privado para evitar la creación de instancias externas
  private constructor() {
    this.value = Math.random(); // Asignar un valor aleatorio para demostrar la singularidad
  }

  // Método estático público para obtener la instancia única
  public static getInstance(): Singleton {
    if (!Singleton.instance) {
      Singleton.instance = new Singleton();
    }
    return Singleton.instance;
  }

  // Método para obtener el valor
  public getValue(): number {
    return this.value;
  }
}

// Uso del Singleton
const singleton1 = Singleton.getInstance();
const singleton2 = Singleton.getInstance();

console.log(singleton1.getValue()); // Imprime un número aleatorio
console.log(singleton2.getValue()); // Imprime el mismo número que singleton1
console.log(singleton1 === singleton2); // true, ambas variables apuntan a la misma instancia 
}

Uso: Implementa notificaciones entre objetos, útil en sistemas de eventos y suscriptores.