ildarin
@ildarin

Как в JSDoc описать тип через результат вызова функции?

Кейс - в среде разработки Visual Code без плагинов. Intellisense автоматом подцепляет типы переменных, которым присвоено значение результата функции.
Например, в таком варианте.
function createElement(id=15){
    const element = { id }
    return element
}
const element = createElement(15)
element./* Intellesence работает */
const elements = false?[createElement()]:[]
elements.map(e=>e./* Intellisense тоже работает */)

64cfd9495702e871585996.png
Я же пытаюсь получить такой же результат, но без костыля в виде false?[createElement()]:[]
Через JSDoc. Два варианта - либо это не возможно, либо - я не нашел (дошел даже до китая). Что-то типа такого:
function createElement(id=15){
    const element = { id }
    return element
}
/** @type {createElement()} */
const elements = []
elements.map(e=>e./* Intellesence не работает */)

Через typedef с определением отдельным блоком объекта и @returns - не рассматриваю, исключительно нативный способ.
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
Зависит от того, что вам нужно: "шашечки или ехать".

Коли первое - то тут уж надо глубоко изучать документацию по jsdoc, без гарантированного результата. Ради (почти) никому не нужных извращений я не возьмусь. :)

Коли второе - IDE сейчас кушают любой typescript в jsdoc, потому просто смело пихаете:
/** @type {Array<ReturnType<typeof createElement>>} */
и оно заработает. Но никаких долговременных гарантий.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы