goog.Timer.callOnce не соответствует формальному параметру: Google Closure
Я получаю сообщение об ошибке, что формальный параметр не совпадает при использовании goog.Timer.callOnce, даже если мне кажется, что я все правильно объявил.
goog.Timer.callOnce(/** @type {function} */ this.doSomething,0,this);
определение метода выглядит
/**
* @param {!goog.events.Event} e
*/
model.someModel.prototype.doSomething = function(e){
}
Ошибка выглядит
ERROR - actual parameter 1 of goog.Timer.callOnce does not match formal parameter
==> default: [ERROR] found : function (this:model.someModel, goog.events.Event): undefined
==> default: [ERROR] required: (function (this:model.someModel): ?|null|{handleEvent: function (): ?})
==> default: [ERROR] goog.Timer.callOnce(/** @type {function} */doSomething,0,this);
Я также пробовал Typecasting /** @type {function()} */
но даже это не сработало
1 ответ
Компилятор ожидает функцию, которая не принимает аргументов (потому что goog.Timer не собирается передавать аргументы), но вы передаете функцию, которая ожидает один аргумент. Либо измените функцию, чтобы она не принимала аргумент, либо сделайте аргумент необязательным:
/**
* @param {!goog.events.Event=} opt_e
*/
model.someModel.prototype.doSomething = function(opt_e) {
if (opt_e) {
...
} else {
...
}
}