Как получить код VS для понимания JSDOC @typedef для нескольких файлов

Я хочу указать тип в одном файле и иметь возможность повторно использовать его в другом. Я пробовал модули, но он не работал в VS Code. Есть ли другое решение? Просто хочу, чтобы все типы для моего проекта были повторно использованы, поэтому я могу ссылаться на них в разных функциях между файлами. Это самый близкий вопрос, который я нашел.

Ответ 1

Начиная с TypeScript 2.9, который встроен в новые коды VS, это возможно с помощью синтаксиса import в JSDoc, например,

/**
 * @typedef {import("koa").Context} Context
 *
 * @typedef {Object} BodyparserOptions
 * @prop {(ctx: Context) => boolean} [detectJSON] Custom json request detect function. Default 'null'.
 */

Также VS Code должен собирать все типы, определенные в рабочей области.

Ответ 2

У меня был некоторый успех с использованием jsconfig.json и его свойства include в простом проекте JavaScript в Visual Studio Code 1.33.1

{
  "include": [
    "src/**/*.js"
  ]
}

Учитывая следующий проект JavaScript:

src/
├── types/
|   ├── person.js
|   ├── question.js
|
├── answer.js
├── jsconfig.json

Где и question.js и person.js являются определениями типов:

person.js

/**
 * @typedef {object} Person
 * @property {string} firstName
 * @property {string} lastName
 */

question.js

/**
 * @typedef {object} Question
 * @property {Person} askedBy
 * @property {string} text
 */

И answer.js - это функция, которая принимает вопрос и возвращает ответ:

/**
 * Takes a question and return an answer
 * @param {Question} question 
 */
function answer(question) {
  return 42;
}

Как вы можете видеть на первом скриншоте, я получаю поддержку IntelliSense при наведении указателя на тип Question:

enter image description here

Кроме того, IntelliSense теперь также может предложить завершение кода на основе моих определений типов:

enter image description here