JSDoc: любой заполнитель для вложенных объектов с аналогичной структурой.

Я пытаюсь задокументировать следующий объект:

let x = {
    stopCP: {
        enabled: false,
        method: "POST",
        body: "STOP"
    },
    startCP: {
        enabled: false,
        method: "POST",
        body: "START"
    },
    restartCP: {
        enabled: false,
        method: "POST",
        body: "RESTART"
    },
    viewLog: {
        enabled: false,
        method: "POST",
        body: "VIEWLOG"
    }
};

Как видите, ключи у "дочерних объектов" одинаковые. Конечно, я мог бы задокументировать каждое отдельное свойство вручную, но мне было интересно, могу ли я сделать что-то подобное (например, использовать какой-то «любой заполнитель», например *):

/**
 * @typedef {Object} options
 * @prop {Object} *            <--- I want this to apply to stopCP, startCP, restartCP and viewLog all at once
 * @prop {Boolean} *.enabled   <--- This should target all "enabled" properties of the child objects
 * @prop {String} *.method     <--- Same for this one
 * @prop {String} *.body       <--- Also same
 */





Кроме того, как указать заданное количество строк? Я имею в виду что-то вроде этого:

/**
 * @typedef {Object} options
 * @prop {String} *.method ["POST" || "GET" || "PUT"]      <---
 */

... который сказал бы мне, что я могу использовать только POST, GET или PUT в качестве значения этого свойства.


person Sv443    schedule 29.01.2019    source источник
comment
Возможный дубликат Как описать аргументы объекта в jsdoc?   -  person Heretic Monkey    schedule 29.01.2019
comment
Для другого вопроса в вашем вопросе (пожалуйста, воздержитесь от того, чтобы задавать несколько вопросов в вопросе в будущем), см. Как документировать тип строки в jsdoc с ограниченными возможными значениями   -  person Heretic Monkey    schedule 29.01.2019
comment
@HereticMonkey извините, я просто подумал, что они достаточно хорошо подходят друг другу. Также я попробовал решение, которое вы дали, но, к сожалению, оно вообще не сработало.   -  person Sv443    schedule 29.01.2019
comment
Что значит вообще не работал? Принятый ответ содержит ссылку на документацию JSDoc, показывающую, как это работает. Как вы его тестируете? Пожалуйста, отредактируйте свой вопрос, включив ссылку на дубликат, как вы пытались реализовать ответы и как вы Определяем, работает ли решение или нет.   -  person Heretic Monkey    schedule 29.01.2019
comment
Ничего себе, я просто что-то перепутал. Это отлично сработало для меня.   -  person Sv443    schedule 29.01.2019