Herencia

En TypeScript no existe la herencia múltiple.

TypeScript

// Herencia

class Animal {

     name: string;

     constructor(theName: string) { this.name = theName; }

         move(distanceInMeters: number = 0) {
         console.log(`${this.name} moved ${distanceInMeters}m.`);

     }
}

class Snake extends Animal {

     constructor(name: string) { super(name); }

         move(distanceInMeters = 5) {
         console.log("Slithering...");
         super.move(distanceInMeters);

     }

}

class Rhino extends Animal {

     constructor(name: string) { super(name); }

         move(distanceInMeters = 10) {
         console.log("Slithering...");
         super.move(distanceInMeters);

     }
}

class Elephant extends Animal {

     constructor(name: string) { super(name); }

         move(distanceInMeters = 20) {
         console.log("Slithering...");
         super.move(distanceInMeters);

     }

}

// Para poder Crear un array con este typo de objetos tenemos que utilizar la clase Padre Ej:

let array : Animal[] = [ new Rhino('Rinocerator'), new Snake("Serpentina"), new Elephant("Elefanton") ];

// El acceso a este ejemplo sería muchisimo más sencillo
let ej2 = {Rhino: new Rhino('Rinocerator'), Snake: new Snake("Serpentina"), Elephant: new Elephant("Elefanton")};

console.log(array);

Javascript

super

En las clases hijas hace referencia a la clase padre, tenemos que tener en cuenta que super solo deberá ser utilizado cuando no haya de por medio fat arrows o funciones de flecha, ya que en ese caso debería utilizarse la palabra reservada this veamos unos ejemplos:

Super sin fat arrow

class Base {
  log() { console.log('hello world'); }
}
class Child extends Base {
  log() { super.log() };
}

This con fat arrow

class Base {
  // realizamos una función mediante el uso de fat arrow
  log = () => { console.log('hello world'); }
}
class Child extends Base {
  logWorld() { this.log() };
}

Si intentamos utilizar super en esta situación el compilador nos dará un error. que nos dirá que solo métodos public o protected son accesibles con la palabra reservada super

results matching ""

    No results matching ""