Clases , herencia e interfaces en Typescript

code-3337044_640

Typescript es un lenguaje de tipado estático muy parecido a Java. Al igual que Java posee tipos básicos de datos(number,string,boolean, etc.) y tipos clase (new Number(), new String(), etc.). La creación de clases también es muy similar.

Herencia.

Una clase padre puede heredar atributos y métodos a una clase hija.

Clase padre/superclase Abstracta.

abstract class Abstracta{
	abstract nada():void;
}

Dentro de la superclase Abstracta definimos un método abstracto llamando nada. Recordar que un método abstracto no necesita un cuerpo, sólo la firma(nombre del método y tipo).

Y tendremos dos clases hijas/subclases Hijo e Hija. Por obligación y contrato las subclases deben adoptar los atributos y comportamiento de la superclase.

class Hijo extends Abstracta{
	nada():void{
		console.log("Nada en hijo")
	}
}

class Hija extends Abstracta{
	nada():void{
		console.log("Nada en hija");
	}
}

Observamos que ambas clases implementan el método nada como a ellas les conviene. Ahora las instancias.

let hijo:Hijo=new Hijo();
let hija:Hija=new Hija();
hijo.nada();//Nada en hijo
hija.nada();//Nada en hija

Una clase abstracta no puede ser instanciada, su función es que otras clases hereden de ella.

Recordar que no podemos hacer algo como esto:

//Esto no se puede/debe hacer:
let abstracta: Abstracta= new Abstracta();
//La finalidad de una clase abstract es que hereden de ella,
// no se puede instanciar

El compilador nos dirá que no es posible instanciar una clase abstracta (al igual que en Java).

Interfaces

Una interface es una clase totalmente abstracta. Se pueden definir métodos sin cuerpo.

Síntaxis:

export interface NombreInterface{
   //...
}

Crearemos una interface llamada Servicio con un método (abstract) denominado operacion con dos parámetros.

interface Servicio{
	operacion(x:number,y:number):number;
}

Ahora crearemos dos clases que implementarán el método de la interface Servicio.


/*La clase Suma sumará dos números*/
class Suma implements Servicio{
	operacion(x:number,y:number):number{
		return x+y;
	}
}

/*La clase IMC calculará el índice de masa corporal de una persona*/
class IMC implements Servicio{
	operacion(peso:number,talla:number):number{
		return peso/(talla*talla);
	}
}


/*instanciamos a la clase Suma*/
let suma:Suma=new Suma();

/*instanciamos a la clase IMC*/
let imc:IMC=new IMC();

/*Mostramos los resultados de las operaciones*/
console.log(suma.operacion(3,6));//9
console.log(imc.operacion(60,1.55));//24.973985

¡Feliz código!

Published by Ariel Cupertino

I'm a computing engineer. I like to program in different programming languages. Mainly in Java and Python.

Leave a comment