Imagina que estás trabajando en un proyecto y de repente te das cuenta de que algunas funciones o propiedades no dependen de los datos específicos de una instancia de una clase. En lugar de crear múltiples instancias innecesarias, podrías optimizar tu código usando la palabra clave static
. Este pequeño cambio puede hacer que tus clases sean más eficientes y fáciles de mantener.
Vamos a ver en qué situaciones puede ser útil esta característica:
Cuando tienes funciones que no dependen de una instancia específica de una clase, hacerlas estáticas tiene mucho sentido. Por ejemplo, si solo necesitas sumar dos números o validar un dato, puedes definir estos métodos como static
para evitar crear instancias innecesarias.
Ejemplo:
export class MathUtils {
static add(a: number, b: number): number {
return a + b;
}
}
MathUtils.add(5, 3); // 8
Otra situación en la que static
es útil es cuando trabajas con valores que no cambian y que serán los mismos para todas las instancias de la clase. Por ejemplo, la versión de una aplicación o una configuración global.
Ejemplo:
export class AppConfig {
static readonly APP_VERSION = "1.0.0";
}
console.log(AppConfig.APP_VERSION); // "1.0.0"
Los métodos estáticos también son ideales para controlar cómo se crean las instancias de una clase. Esto es útil cuando quieres asegurarte de que las instancias se crean de una manera particular, siguiendo el patrón de diseño de Factory.
Ejemplo:
class Car {
static createDefaultCar(): Car {
return new Car("default", 4);
}
constructor(public model: string, public wheels: number) {}
}
const defaultCar = Car.createDefaultCar();
¿Necesitas hacer un seguimiento global de algo? Las propiedades estáticas pueden ayudarte a mantener un contador compartido entre todas las instancias de una clase. De esta forma, no necesitas preocuparte por llevar la cuenta en cada instancia por separado.
Ejemplo:
class Counter {
static count = 0;
constructor() {
Counter.count++;
}
}
new Counter();
new Counter();
console.log(Counter.count); // 2
El patrón Singleton asegura que solo exista una única instancia de una clase, lo que puede ser muy útil cuando trabajas con servicios o recursos que deben ser compartidos en toda tu aplicación.
Ejemplo:
class Singleton {
private static instance: Singleton;
private constructor() {}
static getInstance(): Singleton {
if (!Singleton.instance) {
Singleton.instance = new Singleton();
}
return Singleton.instance;
}
}
const singleton1 = Singleton.getInstance();
const singleton2 = Singleton.getInstance();
console.log(singleton1 === singleton2); // true
static
La palabra clave static
es poderosa cuando se usa correctamente. Permite evitar la creación de instancias innecesarias y optimizar el uso de funciones y propiedades que son globales o compartidas entre todas las instancias de una clase. Sin embargo, es importante no abusar de ella; si un método o propiedad depende de los datos específicos de una instancia, static
no es la mejor opción. Utilízala con sabiduría para mejorar la eficiencia y claridad de tu código.
I am particularly drawn to developing applications that are not only functional but also visually appealing and easy to use. I accomplish this by implementing SOLID principles and clean architecture, and applying testing to ensure quality.