metodos-variables-estaticos-en-typescript

Métodos y variables estáticos en TypeScript

  • 3 min

En TypeScript, los métodos y variables estáticos son aquellos que pertenecen a la clase en sí misma en lugar de a una instancia específica de la clase.

Se utilizan para definir comportamientos que están relacionados con la clase en su conjunto, y no con instancias individuales.

Métodos estáticos

Un método estático es un método que se define con la palabra clave static.

class Calculadora {
    static sumar(a: number, b: number): number {
        return a + b;
    }

    static restar(a: number, b: number): number {
        return a - b;
    }
}

// Uso de los métodos estáticos
console.log(Calculadora.sumar(5, 3)); // Salida: 8
console.log(Calculadora.restar(5, 3)); // Salida: 2

En este ejemplo, sumar y restar son métodos estáticos que realizan operaciones matemáticas. Se accede a ellos directamente desde la clase Calculadora, sin necesidad de crear una instancia.

Los métodos estáticos no tienen acceso a las propiedades de instancia (this), ya que están asociados a la clase en sí misma

Variables estáticas

Una variable estática, al igual que los métodos estáticos, pertenece a la clase en lugar de a instancias individuales. Las variables estáticas se pueden usar para almacenar valores que son comunes para todas las instancias de la clase.

class Configuracion {
    static readonly API_URL: string = "https://api.ejemplo.com";
    static readonly MAX_INTENTOS: number = 5;
}

// Uso de las variables estáticas
console.log(Configuracion.API_URL);         // Salida: https://api.ejemplo.com
console.log(Configuracion.MAX_INTENTOS);    // Salida: 5

En este ejemplo, API_URL y MAX_INTENTOS son variables estáticas que se definen dentro de la clase Configuracion. Estas variables se pueden acceder directamente a través de la clase, sin necesidad de instanciarla.

Herencia de métodos estáticos

Los métodos estáticos pueden ser heredados por clases derivadas.

class Base {
    static mensaje(): void {
        console.log("Mensaje desde la clase Base.");
    }
}

class Derivada extends Base {
    static mensaje(): void {
        console.log("Mensaje desde la clase Derivada.");
    }
}

Base.mensaje();     // Salida: Mensaje desde la clase Base.
Derivada.mensaje(); // Salida: Mensaje desde la clase Derivada.

Casos de uso comunes