Microsoft/TypeScript

No compile error thrown when `this` referenced before call to `super` completes

Open

#8 060 ouverte le 13 avr. 2016

Voir sur GitHub
 (13 commentaires) (0 réactions) (0 assignés)TypeScript (6 726 forks)batch import
Effort: DifficultHelp WantedSuggestion

Métriques du dépôt

Stars
 (48 455 stars)
Métriques de merge PR
 (Merge moyen 6j 17h) (9 PRs mergées en 30 j)

Description

TypeScript Version:

1.8.9

Code JSFiddle: https://jsfiddle.net/kitsonk/fs9t96ep/ TS Playground: http://goo.gl/X7cgvV

class A {
    constructor(fn: () => void) {
        fn.call(this);
    }
    foo: string = 'foo';
}

class B extends A {
    constructor() {
        super(() => {
            console.log(this);
        });
    }
    bar: string = 'bar';
}

const b = new B();

Expected behavior: Typescript should guard against the use of this as the call to super has not completed. Thus it should not compile.

Actual behavior: Typescript compiles this successfully. It works fine when the target is set to es5 but breaks the browser when target is set to es6. Error is: VM89:55 Uncaught ReferenceError: this is not defined

Guide contributeur