Итак, у меня есть базовый класс вроде этого:
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.
}