Microsoft/TypeScript

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

Open

#8,060 创建于 2016年4月13日

在 GitHub 查看
 (13 评论) (0 反应) (0 负责人)TypeScript (48,455 star) (6,726 fork)batch import
Effort: DifficultHelp WantedSuggestion

描述

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

贡献者指南