Typescript: Diese Eingabe wird nicht berücksichtigt

Erstellt am 9. Dez. 2016  ·  1Kommentar  ·  Quelle: microsoft/TypeScript

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.

Question

Hilfreichster Kommentar

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.

>Alle Kommentare

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen