JSDoc

/**
 * @typedef PropertiesHash
 * @type {object}
 * @property {string} id - an ID.
 * @property {string} name - your name.
 * @property {number} age - your age.
 * @property {boolean} isValid
 */

/**
 * @callback myCallback
 * @param {number} x - ...
 */

/**
 * A description of the function.
 *
 * @see {@link https://example.com|Name}
 * @param {string} title - Describe the param.
 * @param {?string} author - An optional param.
 * @param {PropertiesHash} properties - An object with some stuff.
 * @param {?myCallback} callback - Function to call if present.
 * @returns {string} Description.
 */
function myFunction(title, author, properties, callback) {
  // ...
}