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());