JSDoc 内の構造化関数パラメータを文書化する 質問する

JSDoc 内の構造化関数パラメータを文書化する 質問する

これまで、私は常にオブジェクト パラメータを次のように文書化していました。

/**
 * Description of the function
 *
 * @param {Object} config - The configuration
 * @param {String} config.foo
 * @param {Boolean} [config.bar] - Optional value
 * @return {String}
 */
function doSomething (config = {}) {
  const { foo, bar } = config;
  console.log(foo, bar);
  // do something
}

しかし、構造化関数パラメータを使用した場合の最適なアプローチが何であるかはわかりません。オブジェクトを無視するだけか、何らかの方法で定義するか、またはそれを文書化する最適な方法は何ですか?

/**
 * Description of the function
 *
 * @param {String} foo
 * @param {Boolean} [bar] - Optional value
 * @return {String}
 */
function doSomething ({ foo, bar } = {}) {
  console.log(foo, bar);
  // do something
}

object上記のアプローチでは、関数が2 つの異なるパラメータではなく1 つのパラメータを期待していることが明確に伝わらないように感じます。

他に考えられる方法は を使用することです@typedefが、それは大きな混乱を招く可能性があります (特に多くのメソッドを含む大きなファイルの場合)。

/**
 * @typedef {Object} doSomethingConfiguration
 * @property {String} foo
 * @property {Boolean} [bar] - Optional value
 */

/**
 * Description of the function
 *
 * @param {doSomethingConfiguration}
 * @return {String}
 */
function doSomething ({ foo, bar } = {}) {
  console.log(foo, bar);
  // do something
}

ベストアンサー1

これは、ドキュメンテーション

/**
 * My cool function.
 *
 * @param {Object} obj - An object.
 * @param {string} obj.prop1 - Property 1.
 * @param {string} obj.prop2 - Property 2.
 */
const fn = function ({prop1, prop2}) {
  // Do something with prop1 and prop2
}

つまり、最初の例はほぼ正しいということです。

ネストがさらに深い別の例:

/**
 * Nesting example.
 *
 * @param {Object} param
 * @param {number} param.a - First value
 * @param {Object} param.b - Wrapper
 * @param {number} param.b.c - Second value
 * @return {number} sum a and b
 */
const letters = ({a, b: {c}}) => a + c;

おすすめ記事