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.
Si quieres aprender más sobre Métodos y variables estáticos
consulta el Curso de Programación orientada a objetos leer más
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
Utilidades y Funciones Auxiliares
Los métodos estáticos son ideales para definir utilidades y funciones auxiliares que no necesitan acceso a propiedades de instancia.
Por ejemplo, podríamos definir métodos estáticos para realizar conversiones de unidades, cálculos matemáticos o manipulación de strings.
class Conversor {
static metrosAKilometros(metros: number): number {
return metros / 1000;
}
}
console.log(Conversor.metrosAKilometros(5000)); // Salida: 5
Métodos Factoría
En algunos casos, los métodos estáticos se utilizan para crear instancias de la clase con ciertas condiciones o configuraciones.
Estos métodos, a veces llamados métodos factoría, pueden encapsular la lógica de creación de instancias.
class Usuario {
nombre: string;
edad: number;
private constructor(nombre: string, edad: number) {
this.nombre = nombre;
this.edad = edad;
}
static crearUsuario(nombre: string, edad: number): Usuario {
if (edad < 18) {
throw new Error('El usuario debe ser mayor de 18 años.');
}
return new Usuario(nombre, edad);
}
}
const usuario1 = Usuario.crearUsuario("Ana", 22); // Correcto
console.log(usuario1);
const usuario2 = Usuario.crearUsuario("Luis", 16); // Lanza un error
Constantes de Clase
Los métodos estáticos también pueden ser utilizados para acceder a constantes o configuraciones relacionadas con la clase. Aunque no son estrictamente métodos, pueden complementar el uso de métodos estáticos en una clase.
class Configuracion {
static readonly API_URL: string = "https://api.ejemplo.com";
}
console.log(Configuracion.API_URL); // Salida: https://api.ejemplo.com