使用闭包编译器正确键入实例变量
Properly type instance variables with closure compiler
我无法正确键入以下代码:
/**
* @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
?
--编辑--
如果您想看到警告,您需要将reportUnknownTypes
设置为true
,如下所述。我正试图获得100%类型的代码,但我认为我无法通过这么简单的程序达到这一点。
/** @type {function(number)} */
没有指定"this"类型,因此它是未知的。要以您想要的方式指定它,请使用:
/** @type {function(this:F, number)}
使用"@param{number}",编译器可以根据在F的原型上声明的事实推断出"this"类型。
您似乎需要使用@param{number}b而不是@type{function(number)}。使用@param键入不会引发警告。没有什么意义,但它有效:
/**
* @param {number} b
*/
F.prototype.g = function(b) {
this.a += b;
};
--
原始答案:
我认为这是因为你没有在构造函数中键入。试试这个:
/**
* @constructor
*/
function F() {
/**
* @type {number}
* @private
*/
this.a = 0;
};
相关文章:
- 向模板实例变量传递调用方法调用的结果时出现异常
- Rails/Javascript:将实例变量传递给Coffeescript时发生Uncaught ReferenceEr
- 访问 javascript 对象的实例变量
- Angular2/Typescript:从链接可观察函数访问实例变量
- 如何在Promise回调中访问实例变量
- 如何使用每个ajax请求更新实例变量
- 实例变量变为未定义 - CoffeeScript
- 如何显式创建实例变量
- 如何在 JavaScript 中创建实例变量
- 模块化模式中的私有实例变量
- 将实例变量传递给 js Rails
- 找出实例变量名称本身
- 从视图中访问另一个操作实例变量
- 从视图访问实例变量
- 在主干模型中定义实例变量的正确方法是什么
- 是否可以在 javascript 中的私有函数中调用实例变量
- 将 rails 实例变量用于 javascript 条件
- 将实例变量替换为局部变量
- 为什么当我通过 Ajax 请求刷新部分时我的实例变量为空
- 实例变量