私はクロージャコンパイラを使用しています。私はアサートする2つのクラスに最低限のメソッド/プロパティセットがあります。これを実現するために、私はインターフェイスを作成しました...例えば:インターフェイスに関するクロージャリンターの警告
goog.scope(function() {
/**
* @interface
*/
namespace.Foo = function() {};
var Foo = namespace.Foo
/**
* @return {string}
*/
Foo.prototype.bar = function() {};
}); // goog.scope
問題はFoo.prototype.bar
がreturn
文を持っていないということですので、クロージャリンターは閉鎖自体は完全に満足しているにもかかわらず、文句を言います。もちろん
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
注釈を削除すると、その後、閉鎖は不幸であるとメソッドをオーバーライドし、インターフェイスと互換性のない何かを返すことについての警告をスローします。私はこの警告を無効にしたくないのです。なぜなら、最初にインターフェイスを記述した理由は、すべての実装者が必要な作業を行っていることを確認するためです。
このファイルのクロージャーリンターで警告を無効にするために使用できる呪文はありますか?
リンターとコンパイラが一致しないことを少し奇妙かもしれませんが、主な質問は次のようになります。なぜあなたは、文字列を返すために持っているメソッドを実装しましたしかし、しないのですか? – Bergi
@Bergi - それはどんなインターフェースが使われているのですか?実際に、あなたが何かをインターフェースに入れようとすると、クロージャーがあなたに叫ぶでしょう。基本的には、インタフェース(または型チェックの量が異なるレコード)は、さまざまなメソッドに渡すことができるオブジェクトを記述しますが、インタフェースを満たす具体的な実装を作成するのはプログラマの責任です。 – mgilson
ええ、確かに。私はちょうどクロージャコンパイラで十分に精通していないと思う、このインターフェイス*の宣言は、私の実装にあまりにも似ています...(そしておそらくリンターにも)。 – Bergi