[英]Modify builtin extern for closure compiler
我正在使用Google的閉包編譯器,構建時遇到以下錯誤:
path/to/file.js:...: WARNING - actual parameter 1 of Element.prototype.scrollIntoView does not match formal parameter
found : {behavior: string, block: string}
required: (boolean|undefined)
target.scrollIntoView({'block': 'start', 'behavior': 'smooth'});
^
顯然,這里的target
是一個Element
。
好的,看起來好像閉包需要一個布爾值,但是mdn似乎認為一個對象是一個非常好的參數 。 MDN參考https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview,因為它的定義是一致的(平滑滾動實際上在Firefox中有效)。
看起來Closure在w3c_css.js
定義了外部w3c_css.js
,該外部w3c_css.js
在w3c_css.js
中引用了http://www.w3.org/TR/cssom-view/#dom-element-scrollintoview 。 但是,看起來它們甚至都沒有正確的定義,因為w3.org
在簽名中有2個(可選)參數,並且閉包似乎只允許傳遞1。
平滑滾動是一個不錯的選擇(有時我會用更好的跨瀏覽器解決方案替換這段代碼),但是與此同時,如何使該警告靜音?
向github項目提交一個拉取請求,並針對所有人進行修復: https : //github.com/google/closure-compiler/blob/master/externs/browser/w3c_css.js#L2125-如果您不願意這樣做,我會為您做。
定義您自己的外部簽名以覆蓋簽名:
/** @externs */
/**
* @suppress {duplicate}
* @param {(boolean|{behavior: string, block: string})=} opt_top
* @see http://www.w3.org/TR/cssom-view/#dom-element-scrollintoview
*/
Element.prototype.scrollIntoView = function(opt_top) {};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.