我无法正确键入以下代码:

/**
 * @constructor
 */
function F() {
      this.a = 0;
};

/**
 * @type {function(number)}
 */
F.prototype.g = function(b) {
    this.a += b;
};


我收到以下警告:

test.js:12: WARNING - could not determine the type of this expression
    this.a += b;
    ^


在此示例中,如何正确键入this

-编辑-

如果要查看警告,则需要按照here的说明将reportUnknownTypes设置为true。我试图获得100%输入的代码,但我认为用一个简单的程序就无法达到目标。

最佳答案

/** @type {function(number)} */


未指定“此”类型,因此未知。要以这种方式指定它,您将要使用:

/** @type {function(this:F, number)}


使用“ @param {number}”可使编译器从F的原型上声明的事实中推断出“ this”类型。

09-11 19:10