0

私はすべてのJavascriptコードに適切に注釈を付けようとしていますが、まだこの分野の初心者です。

に直接あるサーバー呼び出しからオブジェクトを取得しますjson。それらのオブジェクトは関数に渡され、メンバーを直接呼び出します。明らかに、難読化中にエラーが発生しやすいので、すべてに適切に注釈を付けようとしています。

私の理解では、(i)このオブジェクトを直接作成することはありませんが、このオブジェクトのクラスを作成する必要があります。new(ii)メンバー名はサーバーの応答によって修正され、変更されるべきではないため、注意する必要があります(または事前にエイリアス化してください)。

私は2つの質問があります:私の仮定は正しいですか?それに基づいて注釈を付ける方法。

これが説明のためのサンプルコードです

$.get("url.php", function(data) {
    process(data);}, "json"); // <= returns {"a":"abc","b":1}

function process(data) {
  $("#someElement").html(data.a + data.b);
}

これが、クロージャーのコンパイルのために作成することを計画していたクラスです。

/**
 * The object that is sent back from the server
 * @constructor
 */
function ServerResponse() {
  /** @type {string} a */
  this["a"] = "";
  /** @type {number} b */
  this["b"] = 0;
}

これが私のprocess関数のアノテーションです

/**
 * Process data from the server
 * @param {ServerResponse} data: the Object sent back from the server
 */

私の注釈は正しいですか?難読化に対して堅牢ですか?

あなたの助けをどうもありがとう

4

1 に答える 1

1

プロパティ名を引用する場合は、使用するたびに一貫して引用する必要があります。これが表示されていない場合は、次をお読みください。

https://developers.google.com/closure/compiler/docs/api-tutorial3

したがって、最初のスニペットは次のようになります。

function process(data) {
  $("#someElement").html(data['a'] + data['b']);
}

引用符を避けようとしている場合、またはコンパイラにプロパティの使用法をタイプチェックさせたい場合(引用符で囲まれたプロパティ参照はチェックされません)、ソースのコンパイルに含めるexternファイルを定義する必要があります。

/** 
 * @fileoverview
 * @externs
 */

/** @interface */
function ServerResponse() {}
/** @type {string} */
ServerResponse.prototype.a;
/** @type {number} */
ServerResponse.prototype.b;
于 2012-04-23T16:41:30.897 に答える