Skip to main content

20 Cursos de TypeScript – clases genéricas

Tutorial #20 del curso de TypeScript, en este tutorial finalizamos el uso de genéricos y para ello veremos cómo usar genéricos en clases, para entender las ventajas de usar clases genéricas vamos hacer un ejemplo donde crearemos un algoritmo para administrar una pila o stack y que es una pila bueno una pila es una lista ordenada o estructura de datos que permite almacenar y recuperar datos, siendo el modo de acceso a sus elementos de tipo LIFO (del inglés Last In, First Out, «último en entrar, primero en salir») para este ejemplo tendremos una pila de números y una pila de strings. Primero lo haremos utilizando clases tradicionales y luego mediante una clase genérica.

clasegenerica.ts

class PilaNumeros{

    private vector:number[]=[];

    apilar(x: number){
        this.vector.push(x);
    }

    retirar(){
        if (this.vector.length>0) {
            return this.vector.pop();
        }else{
            return null;
        }        
    }
}

class PilaString{

    private vector:string[]=[];

    apilar(x: string){
        this.vector.push(x);
    }

    retirar(){
        if (this.vector.length>0) {
            return this.vector.pop();
        }else{
            return null;
        }        
    }
}

let pila1 = new PilaNumeros();
pila1.apilar(40);
pila1.apilar(20);
pila1.apilar(1);

console.log(pila1.retirar());

let pila2 = new PilaString();
pila2.apilar("pedro");
pila2.apilar("Luis");
pila2.apilar("rosa");
pila2.apilar("adrian");

console.log(pila2.retirar());

class PilaGenerica<T>{

    private vector:T[] = [];

    apilar(x: T){
        this.vector.push(x);
    }

    retirar(){
        if (this.vector.length>0) {
            return this.vector.pop();
        }
        else{
            return null;
        }
    }

}

let pila3:PilaGenerica<number>;

pila3=new PilaGenerica<number>();
pila3.apilar(20);
pila3.apilar(50);
pila3.apilar(10);

console.log(pila3.retirar());

let pila4:PilaGenerica<string>;

pila4=new PilaGenerica<string>();
pila4.apilar("juan");
pila4.apilar("ana");

console.log(pila4.retirar());

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.