Я документирую функцию, которая возвращает функцию, но у меня возникли некоторые затруднения с выяснением, как выразить в jsdoc тип возврата, который является «дополнением» типа входного параметра.
Я пробую несколько решений, с @augments
и @template
. Наконец, я закончил с этим решением (надуманный образец):
/**
* @template T
* @typedef ModelWithProp
* @type {T & {prop: Object}}
*/
/**
* @template TModel
* @param {Object} x
* @returns {function (TModel): ModelWithProp<TModel>}
*/
export const fn = x => y => {
if (x?.a) {
y.prop = x.a
} else if (x?.b) {
y.prop = { subprop: x.b }
}
return y
}
Мне не понравилось это решение (я не знаю, действительно ли оно работает), и я хотел бы найти более каноническое - более простое- удобочитаемое решение.