ADVANCED_OPTIMIZATIONSを使用してコンパイルすると、Closure Compilerが奇妙な警告を出力します。クローズコンパイラ - @extendsタグで型を解決できません
私はインターフェイスを使用してこのコードをコンパイル警告がありClosure Compiler UI
でそれを見ることができます - @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) { };
誰かが私に間違っていることを説明できますか?
注文:
また、このコードは次のようになります。 –
転送参照が不要なことはどういう意味ですか?あなたは例を挙げることができますか? – Sagi