馃 Classes, this paramemeter (el par谩metro this)

Dentro de un m茅todo o una funci贸n, un par谩metro inicial llamado this tiene un significado especial en TypeScript. Estos par谩metros son eliminados durante la compilaci贸n.

function miFuncion(this: string, x: number) {
  // ... codigo de la funcion
}

La anterior funci贸n es transformada al siguiente c贸digo JavaScript.

function miFuncion(x) {
    // codigo de la funcion
}

TypeScript verifica que la llamada a la funci贸n con el par谩metro this se realice dentro de un contexto apropiado. En lugar de utilizar una arrow function (funci贸n tipo flecha), podemos agregar e par谩metro this a las definiciones de los m茅todos para obligar a que estos m茅todos sean invocados de manera correcta.

class MiClase {
  nombre = "MiClase";

  getNombre(this: MiClase) {
    return this.nombre;
  }
}

const miClase: MiClase = new MiClase();
const r = miClase.getNombre(miClase);
console.log(r()); // <- esto generar谩 un error

Error generado…

The 'this' context of type 'void' is not assignable to method's 'this' of type 'MiClase'

Este m茅todo toma un enfoque distinto al de los arrow functions.

  • Quienes invoquen el m茅todo de la clase de forma incorrecta pueden seguir haci茅ndolo sin darse cuenta.
  • Solo una funci贸n por clase es creada, en lugar de una clase por instancia.
  • La definici贸n de los m茅todos base pueden seguir haciendo uso de super.