Как документировать вложенную функцию с помощью typedef? - PullRequest
0 голосов
/ 01 марта 2020

У меня проблемы с документированием следующего (упрощенный пример):

/**
 * @typedef Stack
 *
 * ??what goes here??
 */

/**Creates new stack object
 * 
 * @param {Object} concur
 * @param {Queue} concur.queue
 * @returns {Stack}
 */
function makeStack ({ queue }) {
    return Object.freeze({
        // I want these to appear as stack properties with types described below
        add,
        pull,
        remove,
    })


    /**Adds member to stack
     * 
     * @param  {Object} member
     */
    async function add(member) {
        return await queue.push(member)
    }

     /**Pulls the most recent member from stack */
    async function pull() {
        return await queue.pull()
    }

    /**Removes target member from stack
     * 
     * @param  {Object} member
     */
    async function remove(id) {
        return await queue.findAndRemove({ id })
    }
}

Я пытался использовать @lends безуспешно, я пытался найти способ ссылки all , pull , удалить типы функций непосредственно в @typedef, опять же без успеха. Может кто-нибудь объяснить, возможно ли использовать JSDo c таким образом? Что я хочу получить при проверке типа стека:

type Stack = {
  add: (member: any) => any,
  pull: () => any,
  remove: (id: number) => any
}
...