没有' new就不能调用类构造函数

时间:2017-05-01 20:07:08

标签: angular typescript antlr antlr4

我正在尝试在使用angular-cli创建的angular 2项目中使用第三方打字稿库(antlr - reference page)。它没有遇到这个错误 如果没有' new ,则无法调用类构造函数MyLexer。如果你查看下面的代码片段,它在调用super();时失败了。另外Lexer.js位于antlr库的node_modules中。

我在我的项目中没有使用babel,但我发现这个其他stackoverflow帖子与我的https://github.com/tunnelvisionlabs/antlr4ts有类似的错误。它说由于ES6类的工作方式,你无法使用转换类扩展本机类。它是否与我的问题有某种关系?请指导。

代码段

solve

MyLexer.ts (生成的代码)

let inputStream = new ANTLRInputStream("sometext");
      let lexer = new MyLexer(inputStream); // it fails here
      let tokenStream = new CommonTokenStream(lexer);
      let parser = new MyParser(tokenStream);

Lexer.js (坐在node_modules中)

    export class MyLexer extends Lexer {
        constructor(input: CharStream) {
                super(input); // it fails here. 
                this._interp = new LexerATNSimulator(MyLexer._ATN, this);
            }    
        // more code
     }

1 个答案:

答案 0 :(得分:3)

这非常令人惊讶。我在节点模块antlr4-graps中使用了与您相同的方法,其中ES6设置为transpilation target,一切运行良好。仔细看看那里。也许你可以发现你的代码和我的代码之间的其他显着差异。我假设您安装了最新版本的antlr4ts。