Что подразумевается под функцией (* =) в комментарии к коду в стиле JSDoc?

Я пишу некоторые комментарии к коду, используя стиль JSDoc, и хочу знать, что подразумевает *= в @returns {function(*=): *}, которая генерируется WebStorm.

Я пытался искать в JSDoc вики и usejsdoc.org, но безрезультатно.

Ниже мой код:

/**
 * Get record data listener generator.
 * @param {Function} createProps
 * @returns {function(*=): *}        // ** generated by webstorm **
 */
export function getRecordCustomDataListener(createProps) {
  return (callback) => onRecordCustomData({ createRecordData: createProps })(callback); // 'onRecordCustomData' has not default argument
}

Я хочу знать, что означает *= в @returns {function(*=): *}.

Ответ 1

См редактировать внизу !!

Тестирование его в WebStorm с небольшим фрагментом, по-видимому, указывает на то, что *= означает, что параметр не является необязательным и может иметь любой тип, где * означает, что параметр имеет любой тип и является необязательным. Смотрите следующий пример с сгенерированным jsdoc из WebStorm:

/**
 *
 * @param createProps
 * @returns {function(*=, *): void}
 */
export function a(createProps) {
    return (callback, callback2) => console.log(callback);
}

Как видите, мы используем только первый параметр callback и оставляем callback2 неиспользованным. Webstorm генерирует соответствующий jsdoc для этого.

Полный jsdoc для нашего примера выше в английских словах: Return an arrow function that takes two parameters, a **not** optional first parameter that can be of any type, and an optional second parameter that can be of any type. That function returns void Return an arrow function that takes two parameters, a **not** optional first parameter that can be of any type, and an optional second parameter that can be of any type. That function returns void

Ссылка на документы:

http://usejsdoc.org/tags-type.html

Необязательный параметр

Необязательный параметр с именем foo.

@param {number} [foo]

//или же:

@param {number =} foo

Необязательный параметр foo со значением по умолчанию 1.

@param {число} [foo = 1]


РЕДАКТИРОВАТЬ: документы указывают, что = означает optional parameter но веб-шторм генерирует его с противоположным значением. Либо это неправильно задокументировано, либо WebStorm делает это неправильно. Я протестировал его в WebStorm 2018.1 Build # WS-181.4203.535, построенном 22 марта 2018 г.