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.
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.
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 lethis
extérieur - qui n'a aucune information de type (aucune)Utilisez
function
et vous obtenez votre tapé ceci:Le comportement me semble bon. Il détecte les erreurs liées à une mauvaise utilisation des fonctions fléchées.