我正在使用闭包编译器,我想要断言的两个类有一组最小的方法/属性。为此,我创建了一个界面......例如:
goog.scope(function() {
/**
* @interface
*/
namespace.Foo = function() {};
var Foo = namespace.Foo
/**
* @return {string}
*/
Foo.prototype.bar = function() {};
}); // goog.scope
问题是Foo.prototype.bar
没有return
语句,所以即使封闭本身完全满意,封闭linter也会抱怨。
Line 38, E:0218: Found @return JsDoc on function that returns nothing
Line 56, E:0218: Found @return JsDoc on function that returns nothing
当然,如果我删除了@return
注释,那么闭包就会不高兴并抛出有关重写方法并返回与接口不兼容的内容的警告。我不想禁用此警告,因为这几乎是我首先编写接口的原因(以确保所有实现者都在做他们需要做的事情)。
我是否可以使用任何神奇的咒语在此文件中的闭包linter中禁用该警告?
答案 0 :(得分:2)
事实证明,答案只是等待在封闭内衣source code/test cases中被发现:
他们写了类似的东西:
| ref number 22 |
total cost = 50 | total sell = 75 | total qty = 5
在他们的测试案例中显然很好。这跟我的有什么不同?好吧,他们没有使用/**
* Sample interface to demonstrate correct style.
* @interface
*/
sample.GoodInterface = function() {
};
/**
* Legal methods can take parameters and have a return type.
* @param {string} param1 First parameter.
* @param {Object} param2 Second parameter.
* @return {number} Some return value.
*/
sample.GoodInterface.prototype.legalMethod = function(param1, param2) {
};
来做任何别名。当我删除别名时(例如
goog.scope
现在,closure-linter足够聪明,可以确定/**
* @return {string}
*/
namespace.Foo.prototype.bar = function() {};
是接口的一部分,并且它不需要方法中的任何实现。真棒。
答案 1 :(得分:1)
尝试以下方法:
/**
* @return {string}
*/
namespace.Foo.prototype.bar;
界面根本不需要任何功能体。我怀疑它们只对编译器可见,甚至根本不会出现在你的代码中。
或者,因为您使用goog.scope
,您可以写:
/**
* @return {string}
*/
Foo.prototype.bar;
答案 2 :(得分:0)