Es importante recordar que TypeScript no cambia el valor en tiempo de ejecución de JavaScript, y que JavaScript es en cierta forma famoso por tener ciertas particularidades en su comportamiento.
Un ejemplo de esto es el valor o la referencia de this
según donde este se utilice…
class MiClase {
nombre = "MiClase";
getNombre(): string {
return this.nombre;
}
}
const miClase: MiClase = new MiClase();
const obj: MiClase = {
nombre: "obj",
getNombre: miClase.getNombre,
};
console.log(obj.getNombre()); // <- la salida será obj
Salida
obj
La razón del porque el valor retornado no es “MiClase” se debe a que this
dentro de una función depende de como la función es invocada. En este ejemplo, debido a que la función es invocada dentro de un objeto, esta hace referencia a a propiedad nombre
de dicho objeto cuyo valor es obj
.
Esto rara ocasión es lo que se desea, y TypeScript
intenta mitigar este tipo de comportamientos en la medida de lo posible.