我在使用jQuery-1.4.3 externs文件時特別看到了這一點。爲的javadoc讀取如何讓Closure編譯器在調用函數時停止對聯合類型的抱怨?
/**
* @param {(string|number|function(number,number))=} arg1
* @return {(number|jQueryObject)}
* @nosideeffects
*/
jQueryObject.prototype.width = function(arg1) {};
我有一個電話,看起來像這樣:
var w = $(window).width();
$('#whatever').width(w)
封抱怨: 警告 - jQueryObject.prototype.height的實際參數1找到正式的參數 不匹配:((jQueryObject | null | number)) 必需:(function(number,number):?| number | string | undefined) $('#Xobni')。height($(window).height());
從玩弄(刪除可能的返回類型),我可以看到問題是第一次調用width可能會返回一個jQueryObject,並且因爲這不是有效的輸入,所以Closure給我一個錯誤。我嘗試添加此:
/**
* @type {number}
*/
var w = $(window).width();
$('#Xobni').width(w);
但隨後封抱怨: 警告 - 初始化變量 發現:(jQueryObject |空|數) 要求:數量 變種W = $(窗口).WIDTH();
問題是,當寬度接受一個參數時,它返回一個jQueryObject。當它沒有參數時,它返回一個數字。所以我知道我的電話沒問題,但是javadoc並沒有完全反映,所以Closure正在警告我。有沒有一種方法來適當地修復javadocs或一種方式來告訴閉幕我知道這個結果將是一個數字。我知道我可以壓制這個錯誤,但我想知道如何更好地註釋這些東西。
感謝您的幫助!
完美運作。謝謝!它甚至可以在內聯中使用,如果我使用: $('#whatever')。width(/ ** @type {number} */$(window).width()); – 2010-10-28 05:13:01