TypeScript-Version: 2.0.3
Code
interface UIElement {
addClickListener(onclick: (this: UIElement, e: Event) => void): void;
prop: number;
}
let uiElement: UIElement;
uiElement.addClickListener(() => {
var k = this.prop;
});
Erwartetes Verhalten:
Kein Fehler
Tatsächliches Verhalten:
tsc.exe --noImplicitThis blah.ts
blah.ts (8,10): Fehler TS2683: 'this' hat implizit den Typ 'any', da es keine Typanmerkung gibt.
In Ihrem Beispiel verwenden Sie eine Pfeilfunktion. Das in dieser Funktion verfügbare this
dem this
außerhalb - das keine Typinformationen enthält (keine).
Verwenden Sie function
und Sie erhalten Folgendes:
interface UIElement {
addClickListener(onclick: (this: UIElement, e: Event) => void): void;
prop: number;
}
let uiElement: UIElement;
uiElement.addClickListener(function() {
var k = this.prop;
});
Das Verhalten sieht für mich gut aus. Es werden Fehler im Zusammenhang mit dem Missbrauch von Pfeilfunktionen abgefangen.
Hilfreichster Kommentar
In Ihrem Beispiel verwenden Sie eine Pfeilfunktion. Das in dieser Funktion verfügbare
this
demthis
außerhalb - das keine Typinformationen enthält (keine).Verwenden Sie
function
und Sie erhalten Folgendes:Das Verhalten sieht für mich gut aus. Es werden Fehler im Zusammenhang mit dem Missbrauch von Pfeilfunktionen abgefangen.