🧱 ¿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
?
- ✅ Para encapsular reglas o validaciones personalizadas
- 🧪 Para tener lógica reutilizable sobre números (sumar, restar, convertir, validar)
- 📦 Para trabajar en proyectos grandes donde un simple
number
ya no es suficiente - 🧠 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 ejemploPorcentaje 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()
---