🧱 ¿Qué es una clase Num?

Una clase Num (o Numero) no es parte de Angular ni de TypeScript por defecto, pero tú puedes crearla como una estructura personalizada para manejar números con ciertas operaciones u objetos más estructurados.

Se utiliza cuando quieres encapsular propiedades, validaciones, y métodos matemáticos que trabajan alrededor de un número.


🔨 Ejemplo base de una clase Num

class Num {
  private valor: number;

  constructor(valor: number) {
    this.valor = valor;
  }

  getValue(): number {
    return this.valor;
  }

  isEven(): boolean {
    return this.valor % 2 === 0;
  }

  double(): number {
    return this.valor * 2;
  }

  toString(): string {
    return `📦 Valor actual: ${this.valor}`;
  }
}

✅ Uso de la clase Num

const miNumero = new Num(6);

console.log(miNumero.getValue()); // 6
console.log("¿Es par?", miNumero.isEven()); // true
console.log("Doble:", miNumero.double()); // 12
console.log(miNumero.toString()); // 📦 Valor actual: 6

🎯 ¿Para qué sirve crear una clase Num?

  1. ✅ Para encapsular reglas o validaciones personalizadas
  2. 🧪 Para tener lógica reutilizable sobre números (sumar, restar, convertir, validar)
  3. 📦 Para trabajar en proyectos grandes donde un simple number ya no es suficiente
  4. 🧠 Para aprender los principios POO (Programación Orientada a Objetos)

💡 Ejemplo avanzado: clase Num con operaciones matemáticas

class Num {
  constructor(private valor: number) {}

  suma(n: number): Num {
    return new Num(this.valor + n);
  }

  resta(n: number): Num {
    return new Num(this.valor - n);
  }

  multiplica(n: number): Num {
    return new Num(this.valor * n);
  }

  divide(n: number): Num {
    if (n === 0) throw new Error("❌ División por cero no permitida");
    return new Num(this.valor / n);
  }

  esPositivo(): boolean {
    return this.valor > 0;
  }

  imprimir(): void {
    console.log(`📦 Valor: ${this.valor}`);
  }
}

🧪 Uso:

const numero = new Num(10);
numero.imprimir(); // 📦 Valor: 10

const resultado = numero.suma(5).multiplica(2); // (10 + 5) * 2 = 30
resultado.imprimir(); // 📦 Valor: 30

console.log("¿Es positivo?", resultado.esPositivo()); // true

🧙‍♂️ Ventajas de usar esta clase Num

Ventaja ¿Por qué importa?
Encapsulamiento Protege y controla el acceso al valor
Métodos encadenables Permite operaciones más limpias y elegantes
Validación centralizada Puedes agregar reglas como "no dividir entre 0"
Reutilización Puedes usar Num en varios proyectos o módulos

📌 Detalles técnicos

  • ✅ Puedes usar private para evitar que otros modifiquen el número directamente
  • ✅ Puedes extender Num para crear por ejemplo Porcentaje extends Num
  • ✅ Puedes sobreescribir el método toString() para imprimir bonito

🧁 Postre final: Mini práctica para ti

ts
// Crea una clase Num que tenga:
// - una propiedad valor (número)
// - un método cuadrado()
// - un método raiz()
// - un método negativo()
// - un método mostrar()


---