Что `function (* =)` подразумевает в комментарии к коду в стиле JSDoc? - PullRequest
0 голосов
/ 02 января 2019

Я пишу некоторые комментарии к коду, используя стиль 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 Ответ

0 голосов
/ 02 января 2019

См. Правку внизу !!

Тестирование его в 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

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

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

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

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

@ param {number} [foo]

// или:

@ param {number =} foo

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

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


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

...