簡體   English   中英

修改內置的extern用於閉包編譯器

[英]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.c​​sswg.org/cssom-view/#dom-element-scrollintoview,因為它的定義是一致的(平滑滾動實際上在Firefox中有效)。

看起來Closure在w3c_css.js定義了外部w3c_css.js ,該外部w3c_css.jsw3c_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM