Typescript: Cette saisie n'est pas respectée

Créé le 9 déc. 2016  ·  1Commentaire  ·  Source: microsoft/TypeScript

Version TypeScript: 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;
});

Comportement prévisible:

Pas d'erreur

Comportement réel:
tsc.exe --noImplicitThis blah.ts
blah.ts (8,10): erreur TS2683: 'this' a implicitement le type 'any' car il n'a pas d'annotation de type.

Question

Commentaire le plus utile

Dans votre exemple, vous utilisez une fonction de flèche - donc le this disponible à l'intérieur de cette fonction est le même que le this extérieur - qui n'a aucune information de type (aucune)

Utilisez function et vous obtenez votre tapé ceci:

interface UIElement {
    addClickListener(onclick: (this: UIElement, e: Event) => void): void;
    prop: number;
}

let uiElement: UIElement;
uiElement.addClickListener(function() {
    var k = this.prop;
});

Le comportement me semble bon. Il détecte les erreurs liées à une mauvaise utilisation des fonctions fléchées.

>Tous les commentaires

Dans votre exemple, vous utilisez une fonction de flèche - donc le this disponible à l'intérieur de cette fonction est le même que le this extérieur - qui n'a aucune information de type (aucune)

Utilisez function et vous obtenez votre tapé ceci:

interface UIElement {
    addClickListener(onclick: (this: UIElement, e: Event) => void): void;
    prop: number;
}

let uiElement: UIElement;
uiElement.addClickListener(function() {
    var k = this.prop;
});

Le comportement me semble bon. Il détecte les erreurs liées à une mauvaise utilisation des fonctions fléchées.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

kyasbal-1994 picture kyasbal-1994  ·  3Commentaires

Antony-Jones picture Antony-Jones  ·  3Commentaires

zhuravlikjb picture zhuravlikjb  ·  3Commentaires

blendsdk picture blendsdk  ·  3Commentaires

manekinekko picture manekinekko  ·  3Commentaires