簡體   English   中英

@override方法,Google Closure Compiler

[英]@override a method, Google Closure Compiler

我試圖覆蓋超類的方法並使用Google Closure Compiler編譯代碼,但我收到有關錯誤類型的警告。

/Users/Jan/dev/cro/public/app/js/LibraryController.js:55: WARNING -
  mismatch of the setState property type and the type of the property it overrides
  from superclass app.Controller
original: function (this:app.Controller, Object): undefined
override: function (this:app.LibraryController, Object, string, string): undefined
app.LibraryController.prototype.setState = function (state, section, article) {

正如您所看到的,我不會更改超級方法接受的參數類型,也不會更改返回的類型。

有誰知道如何解決這個問題? 謝謝。

為了澄清,以下是各個方法的定義。

/**
 * @param {!Object} state The new state.
 */
app.Controller.prototype.setState = function (state) { ... };

/**
 * @param {!Object} state The new state.
 * @param {string} section A section ID.
 * @param {string} article An article ID.
 * @override
 */
app.LibraryController.prototype.setState = function (state, section, article) { ... }

重寫方法必須具有相同(或至少非常相似)的簽名。 具體而言,Subclass方法必須能夠在可以使用基類的任何地方使用。 請參閱完整討論: https//groups.google.com/d/topic/closure-compiler-discuss/o_CMZAvFOLU/discussion

您在上面發布的錯誤消息顯示重寫方法具有比原始方法更多的必需參數,這是特別不允許的。 但是,您可以有更多可選參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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