2

@type に関するUseJSDoc.orgのページでは、配列とオブジェクトを文書化する方法について説明していますが、オブジェクトの配列については説明していませ。私の関数は、特定のプロパティ リストを持つオブジェクトの配列を受け入れます。これらのプロパティを文書化したいと思います。

関数は次のようにfunction foo(people)なり、people配列は関数の呼び出し元によって次のように作成された可能性があります。

arr = [];
arr.push({name: "Alfred", profession: "Butler", hitpoints: 2});
arr.push({name: "Batman", profession: "Vigilante", hitpoints: 42});
// ...
foo(arr)

オブジェクトを文書化するために構文を使用したい{{name: string, profession: string, hitpoints: number}} Personのですが、オブジェクトが配列に含まれている必要があるという概念も含めたいと思います。

基礎となるオブジェクト (コードは何も参照しませんが、上記で呼び出しPersonたもの) は適切なクラスではなく、どこにも名前が付けられていないことに注意してください。また、 @propertyタグを使用するための単一の " Person" がどこにも定義されていません。

この種のコードを JSDoc3 でドキュメント化することの難しさは、整理が不十分であることを示唆している可能性があります。主にハッシュ テーブル (連想配列) として使用される、このような一時的なオブジェクトを再編成する方法についてアドバイスをいただければ幸いです。

4

1 に答える 1

4

これを行うには、次の 2 つの方法があります。

/**
 * @param {Array.<{name: string, profession: string, hitpoints: number}>} people The people.
 */
function foo(people) {
}

/**
 * @typedef Person
 * @property {string} name
 * @property {string} profession
 * @property {number} hitpoints
 */

/**
 * @param {Array.<Person>} people The people.
 */
function foo2(people) {
}

コードに実際には存在しないものについて jsdoc に伝えることができることに注意してください。@typedefが代表的な例です。また、処理できない@class抽象的なデータ構造を文書化することもありました。@typedefこれらは疑似クラスであり、JavaScript コードに対応する「クラス」がないことをドキュメントで指摘しました。

于 2014-08-22T10:55:09.890 に答える