0

Googleクロージャが変数を誤ってしまうのを避けるために、JavaScriptに正しく注釈を付そうとしています。Javascript - Googleクロージャのアノテーション - タイプを匿名関数に設定する

匿名関数を強く入力して、関数のパラメータ(私の場合はexternsです)の名前が変更されていないことを確認できますか?ここ

は図

/** externs.js where I define my externs */ 
/** @interface a Json object returned by the server */ 
function MyServerResult() {} 
/** @type {boolean} */ 
MyServerResult.prototype.error; 

と外部宣言としてexterns.jsjquery.jsでコンパイルされた別のファイルです。

$.get("url.php", function(data) {alert(data.error;}, "json"); 

私は無名関数function(data)@type {function(MyServerResult)}のでerrorの名前が変更されていないがあることを確認してくださいしようとしています。

私はそれを直接行うことができますか、別の関数を作成する必要がありますか(コンパイラによってインライン展開される可能性があります)?

答えて

2

私はあなたが行うことができるはずと信じて:

/** 
* @param {MyServerResult} data 
*/ 
var callback = function(data) { 
    alert(data.error); 
}; 
$.get("url.php", callback, "json"); 
+0

おかげで、非常に合理的に聞こえます。私はこれを試してみる。 –

+0

テストの後、メンバの名前を変更するのが最も重要であるという意味で機能します。しかし、予期せぬタイプのデータがないため警告が生成されます。何らかの「キャスティング」によってこの警告を取り除く方法はありますか? –

+0

私はアップデートを追加しました。一撃してください。 – bolinfest

関連する問題