Class “闭包编译器警告”;错误的类型批注。未知类型…&引用;扩展Ecmascript 6类时
在使用闭包编译器编译时,对于从另一个类继承的每个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.
/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未附加到函数节点。是否缺少括号?”