Typescript: Esta digitação não é respeitada

Criado em 9 dez. 2016  ·  1Comentário  ·  Fonte: microsoft/TypeScript

Versão 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;
});

Comportamento esperado:

Sem erro

Comportamento real:
tsc.exe --noImplicitThis blah.ts
blah.ts (8,10): erro TS2683: 'this' implicitamente tem o tipo 'any' porque não tem uma anotação de tipo.

Question

Comentários muito úteis

Em seu exemplo, você está usando uma função de seta - portanto, this disponível dentro desta função é o mesmo que this fora - que não tem nenhuma informação de tipo (qualquer)

Use function e você receberá o seguinte:

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

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

O comportamento parece bom para mim. Ele detecta erros relacionados ao uso indevido das funções das setas.

>Todos os comentários

Em seu exemplo, você está usando uma função de seta - portanto, this disponível dentro desta função é o mesmo que this fora - que não tem nenhuma informação de tipo (qualquer)

Use function e você receberá o seguinte:

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

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

O comportamento parece bom para mim. Ele detecta erros relacionados ao uso indevido das funções das setas.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

DanielRosenwasser picture DanielRosenwasser  ·  3Comentários

siddjain picture siddjain  ·  3Comentários

kyasbal-1994 picture kyasbal-1994  ·  3Comentários

dlaberge picture dlaberge  ·  3Comentários

Roam-Cooper picture Roam-Cooper  ·  3Comentários