VSCode: как документировать обещание, которое разрешается с помощью сложного объекта?
У меня есть функция f
, которая возвращает a Promise
. Возвращаемый Promise
либо resolve({name: String, data: Object})
, либо reject(Error)
.
Я пробовал следующий синтаксис (как упоминалось в проблема в JSDoc) в VSCode, но он не работает:
/**
* @promise fPromise
* @reject {Error}
* @fulfill {Object} project
* @fulfill {Object} project.data
* @fulfill {String} project.name
* @returns fPromise
*/
Ответы
Ответ 1
Думаю, лучше всего заключить ваш ответ fulfill
в пользовательский объект:
/**
* @promise fPromise
* @reject {Error}
* @fulfill {Project}
* @returns {Promise.<Project>}
*/
function renderResults(data) {
return new Promise((resolve, reject) => {
resolve(new Project())
})
}
renderResults()
function Project() {
this.data = "data";
this.name = "project phoenix"
this.location = {
city: 'seattle',
state: 'wa'
}
}
Это будет показано в VS-коде, как показано ниже:
![введите описание изображения здесь]()
Ответ 2
Чтобы быть как можно более ясным, почему бы не поместить природу объекта в одну строку для описания? Его просто должно быть описание этого.
/**
* @promise fPromise
* @fulfill {Object} A project object with the format {name: String, data: Object}
* @reject {Error}
* @returns fPromise
*/
Или, если вы хотите обрабатывать динамически сгенерированные ключи объектов, похожие на Руководство по стилю Google:
/**
* @promise fPromise
* @fulfill {Object.<String, Object>}
* @reject {Error}
* @returns fPromise
*/
Это позволяет любому, кто читает ваш комментарий, понять, как выглядит возвращаемый объект, какие ключи и какой тип значения должен быть в каждом ключе.
Если вы не пытаетесь сказать, что он может вернуть любую из трех возможностей. Тогда я думаю, что ваш оригинальный формат немного более подробно описывает возможные результаты выполнения обещания.