Versión de TypeScript: 2.0.3
Código
interface UIElement {
addClickListener(onclick: (this: UIElement, e: Event) => void): void;
prop: number;
}
let uiElement: UIElement;
uiElement.addClickListener(() => {
var k = this.prop;
});
Comportamiento esperado:
No hay error
Comportamiento real:
tsc.exe --noImplicitThis blah.ts
blah.ts (8,10): error TS2683: 'esto' tiene implícitamente el tipo 'cualquiera' porque no tiene una anotación de tipo.
En su ejemplo, está utilizando una función de flecha, por lo que el this
disponible dentro de esta función es el mismo que el this
externo, que no tiene información de tipo (cualquiera)
Use function
y obtendrá lo siguiente:
interface UIElement {
addClickListener(onclick: (this: UIElement, e: Event) => void): void;
prop: number;
}
let uiElement: UIElement;
uiElement.addClickListener(function() {
var k = this.prop;
});
El comportamiento me parece bien. Detecta errores relacionados con el mal uso de las funciones de flecha.
Comentario más útil
En su ejemplo, está utilizando una función de flecha, por lo que el
this
disponible dentro de esta función es el mismo que elthis
externo, que no tiene información de tipo (cualquiera)Use
function
y obtendrá lo siguiente:El comportamiento me parece bien. Detecta errores relacionados con el mal uso de las funciones de flecha.