[解決済み] jsdocでコールバックのドキュメントを作成する正しい方法は?
2023-03-29 09:37:43
質問
jsdocでコールバックを適切に文書化する最良の方法を探して、かなりの時間をインターネット上で過ごしましたが、残念ながら、まだ素晴らしいものは見つかっていません。
これが私の質問です。
私は、開発者用のNode.jsライブラリを書いています。このライブラリは、開発者が作業することになる複数のクラス、関数、およびメソッドを提供します。
私のコードを明確で理解しやすくするため、また、(できれば)将来的にいくつかの API ドキュメントを自動生成するために、私は jsdoc を使うようにしました。
次のような関数を定義するとしましょう。
function addStuff(x, y, callback) {
callback(x+y);
});
jsdocを使って、現在この関数を以下のようにドキュメント化しています。
/**
* Add two numbers together, then pass the results to a callback function.
*
* @function addStuff
* @param {int} x - An integer.
* @param {int} y - An integer.
* @param {function} callback - A callback to run whose signature is (sum), where
* sum is an integer.
*/
function addStuff(x, y, callback) {
callback(x+y);
});
コールバック関数が受け取るべきものを絶対的に指定する方法がないので、上記の解決策はちょっとハック的な気がします。
理想的には、次のようなことをしたいです。
/**
* Add two numbers together, then pass the results to a callback function.
*
* @function addStuff
* @param {int} x - An integer.
* @param {int} y - An integer.
* @param {callback} callback - A callback to run.
* @param {int} callback.sum - An integer.
*/
function addStuff(x, y, callback) {
callback(x+y);
});
上記は、私のコールバックが受け入れる必要があるものをより簡単に伝えることを可能にするように思えます。 これは意味があるのでしょうか?
私の質問は単純だと思います:jsdocで私のコールバック関数を明確に文書化する最良の方法は何でしょうか?
お時間をいただき、ありがとうございます。
どのように解決するのですか?
JSDoc 3 では @callback タグがあります。 があります。以下は使用例です。
/**
* Callback for adding two numbers.
*
* @callback addStuffCallback
* @param {int} sum - An integer.
*/
/**
* Add two numbers together, then pass the results to a callback function.
*
* @param {int} x - An integer.
* @param {int} y - An integer.
* @param {addStuffCallback} callback - A callback to run.
*/
function addStuff(x, y, callback) {
callback(x+y);
}
関連
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] モバイル端末の検出にはどのような方法がありますか?
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] Node.jsで現在のスクリプトのパスを取得するにはどうしたらいいですか?
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] これは純関数ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] $.ajax実行中にローディングイメージを表示する
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ