Class “闭包编译器警告”;错误的类型批注。未知类型…&引用;扩展Ecmascript 6类时

Class “闭包编译器警告”;错误的类型批注。未知类型…&引用;扩展Ecmascript 6类时,class,ecmascript-6,google-closure-compiler,Class,Ecmascript 6,Google Closure Compiler,在使用闭包编译器编译时,对于从另一个类继承的每个Ecmascript 6类,我都会收到一个警告: 我已经尽可能地简化了事情,但仍然得到了警告: /src/main/js/com/tm/dev/Dog.js: WARNING - Bad type annotation. Unknown type module$$src$main$js$com$tm$dev$Animal.default 编译后的代码运行正确。(我尝试了很多注释,但这些注释只会让事情变得更糟。)有人知道这里的预期吗 Animal.

在使用闭包编译器编译时,对于从另一个类继承的每个Ecmascript 6类,我都会收到一个警告:

我已经尽可能地简化了事情,但仍然得到了警告:

/src/main/js/com/tm/dev/Dog.js: WARNING - Bad type annotation. Unknown type module$$src$main$js$com$tm$dev$Animal.default
编译后的代码运行正确。(我尝试了很多注释,但这些注释只会让事情变得更糟。)有人知道这里的预期吗

Animal.js:

export default class{
    constructor(){
        this.legs = [];
    }
    addLeg(legId){
        this.legs.push( legId );
    }
}
Dog.js:

import Animal from './Animal';

export default class extends Animal {
    constructor(){
        super();
        [1,2,3,4].forEach(leg=>this.addLeg(leg));
        console.log( 'Legs: ' + this.legs.toString() );
    }
}

警告消息中有一个提示,但如果您不熟悉,显然会感到困惑

闭包编译器可以使用有关JavaScript变量的数据类型信息来提供增强的优化和警告。然而,JavaScript无法声明类型

由于JavaScript没有用于声明变量类型的语法,因此必须在代码中使用注释来指定数据类型

(以下内容未经测试。)

闭包编译器报告说,在
Dog.js
中,它无法识别“类型”
Animal
。这是因为您正在导出未命名的类表达式:
export default class

因此,您可以为类指定一个名称(
export default class Animal
),当标记
Animal
Dog.js
中使用时,闭包编译器可能会识别该标记

您还可以给类一个JSDoc,将其标记为
@constructor

/**
 * Animal.
 * @constructor
 */
export default class Animal {}

谢谢你查到了。这是一个错误。你能为此提交一份文件吗@ChadKillingsworth Sure:-)错误在于它无法将未命名类的导入名称识别为类型?()谢谢!因此,我应该将该类标记为构造函数,而不是类中的“构造函数”方法?我如上所述添加了类名(导出默认类),但仍然收到了警告。在类上方添加注释会发出一个附加警告:“警告-函数注释放错位置。此JSDoc未附加到函数节点。是否缺少括号?”