单个文件中的多个类会导致过载警告

时间:2017-10-09 20:13:24

标签: google-closure-compiler es6-class

我最近开始玩闭包编译器和ES6,我注意到一些我认为有点奇怪的东西。当我编译以下代码时:

export class Test
{
    constructor(arg)
    {
        this.arg = arg;
    }
}

class Test2
{
    constructor(diffArg)
    {
        this.diffArg = diffArg;
    }
}

当我使用ADVANCED进行编译时,我得到了这个输出:

java -jar closure-compiler-v20170910.jar --compilation_level ADVANCED --language_in ECMASCRIPT6_TYPED --language_out ECMASCRIPT5 --js_output_file ui.js --js javascript/*.js --externs javascript/externs/externs.js --jscomp_off missingProperties

Test.js:11: WARNING - Function and method overloads are not supported and type information might be lost
        constructor(diffArg)
        ^^^^^^^^^^^^^^^^^^^^^^

Test.js:5: ERROR - variable arg is undeclared
                this.arg = arg;
                           ^^^

看起来编译器在抱怨,因为文件中有两个具有相同名称的函数 - 即使它们位于不同的类中 - 并且由于第二个函数替​​换了第一个函数而出现错误。如果我使用SIMPLE编译,我得到警告但不是错误,并且发出的代码似乎包含第二个构造函数定义。为了使代码能够正确编译,我需要将每个类放入自己的文件中。

我的问题是这是否是预期的行为 - 我不相信ES6规范中有任何关于每个文件只有一个类的内容,并且因为每个函数都在不同的类中,所以我希望我可以为每个使用相同的名称(特别是对于构造函数)。有没有办法绕过这个,或者让每个类在自己的文件中都有正确的方法?

0 个答案:

没有答案