Closure Compiler会输出一个奇怪的警告。
中看到它使用接口编译此代码时会出现警告 - @interface
// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==
/**
* @interface
* @extends {IReused}
*/
function IRegistration() {
}
/**
* @interface
*/
function IInitializable() {
}
/**
* @param {IReused} initializer
*/
IInitializable.prototype.initializedBy = function (initializer) { };
/**
* @interface
* @extends {IOwned}
*/
function IReused() {
}
/**
* @interface
*/
function IOwned() {
}
输出:
WARNING - Could not resolve type in @extends tag of IRegistration
function IRegistration() {
^
0 error(s), 1 warning(s)
但是当我使用@constructor将所有接口更改为类时,一切正常。
// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==
/**
* @constructor
* @extends {IReused}
*/
function IRegistration() {
}
/**
* @constructor
*/
function IInitializable() {
}
/**
* @param {IReused} initializer
*/
IInitializable.prototype.initializedBy = function (initializer) { };
/**
* @constructor
* @extends {IOwned}
*/
function IReused() {
}
/**
* @constructor
*/
function IOwned() {
}
当我从initializedBy函数中删除IReused参数时使用接口时,一切都按预期工作。
/**
* @interface
* @extends {IReused}
*/
function IRegistration() {
}
...
/**
* @param {IReused} initializer
*/
IInitializable.prototype.initializedBy = function (initializer) { };
To ->
/**
* @param {*} initializer
*/
IInitializable.prototype.initializedBy = function (initializer) { };
有人可以解释一下我做错了什么吗?
答案 0 :(得分:1)
问题是,在IReused
中使用IOwned
后,您已定义IRegistration
和// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==
/**
* @interface
*/
function IOwned() {
}
/**
* @interface
* @extends {IOwned}
*/
function IReused() {
}
/**
* @interface
* @extends {IReused}
*/
function IRegistration() {
}
/**
* @interface
*/
function IInitializable() {
}
/**
* @param {IReused} initializer
*/
IInitializable.prototype.initializedBy = function (initializer) { };
。
如果你只是将装潢移动起来,那就可以了。 在编译器UI here中查看它。
这也是代码的样子:
{
foo: {
bar: 1,
baz: 2,
qux: 3
}
}