Microsoft/TypeScript

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

開放

#8,060 建立於 2016年4月13日

 (13 則留言) (0 個反應) (0 位負責人)TypeScript (13,395 個分叉)batch import
Effort: DifficultHelp WantedSuggestion

倉庫指標

星標
 (108,860 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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

貢獻者指南