JSDo c - Как мне документировать метод stati c в суперклассе, который возвращает экземпляр своего подкласса? - PullRequest
0 голосов
/ 11 июля 2020

Итак, у меня есть базовый класс вроде этого:

class BaseAPIClass {
    /**
     * Async factory
     * Does some async operation, then instantiates the inheriting class.
     *
     * @param {String} id
     *
     * @returns {Promise<???>}
     */
    static async create(id) {
        const data = await fetchFromNetwork(id)
        return new this.prototype.constructor(data)
    }
}

И подкласс вроде этого:

class RadAPIClass extends BaseAPIClass {
    /**
     * Output a compliment.
     * @param {name} [name='my dude']
     */
    complimentJorts(name = 'my dude') {
        const possibleCompliments = ['gnarly', 'tubular', 'bodacious', 'radical', 'sick']
        const i = Math.floor(Math.random() * possibleCompliments.length)
        const compliment = possibleCompliments[i]
        console.log(`Those are some ${compliment} jorts, ${name}!`)
    }
}

Мой вопрос:

Как мне документировать возвращаемый тип для BaseAPIClass.create() таким образом, чтобы правильно сообщить читателям и intellisense, что RadAPIClass.create() возвращает {Promise<RadAPIClass>}?

async function main()
{
    const rad = await RadAPIClass.create()
    rad.complimentJorts() // I want VSCode to be able to autocomplete this method for me.
}
...