Например, есть код:
...
props: {
items: {
validator(items) {
function isValid() {
if (Array.isArray(items) !== true) return false;
return items.every((item) => {
if (typeof item !== 'object' || item.constructor !== Object) return false;
if (typeof item.id !== 'string') return false;
if (typeof item.title !== 'string') return false;
if (typeof item.sub !== 'object' || item.sub.constructor !== Object) return true;
return isValid(item.sub);
});
}
return isValid(items);
},
required: false,
},
},
...
Не могу понять, как можно задокументировать валидатор для items и сам items, чтобы можно было сгенерировать правильную документацию через jsdoc\jsdoc-vuejs и пройти проверки линтера eslint-plugin-jsdoc.
Полагаю должно быть что-то такое:
/**
* @param {object[]} items
* @param {string} items[].id
* @param {string} items[].name
* @param {object[]} items[].sub
* @param {string} items[].sub[].id
* @param {string} items[].sub[].name
*/
Но jsdoc вообще не видит эту конструкцию
UPD
При комментировании аргументами из плагина jsdoc-vuejs
/**
* @vue-prop {object[]} items
* @vue-prop {string} items[].id
* @vue-prop {string} items[].name
* @vue-prop {object[]} items[].sub
* @vue-prop {string} items[].sub[].id
* @vue-prop {string} items[].sub[].name
*/
В сгенерированой доке пропа items не собирается в объект, а отображается отдельно каждой строкой
Для jsdoc использую шаблон minami