Typescript: Esta escritura no se respeta

Creado en 9 dic. 2016  ·  1Comentario  ·  Fuente: microsoft/TypeScript

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.

Question

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 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.

>Todos los comentarios

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.

¿Fue útil esta página
0 / 5 - 0 calificaciones