Я хочу указать тип в одном файле и иметь возможность повторно использовать его в другом. Я пробовал модули, но он не работал в VS Code. Есть ли другое решение? Просто хочу, чтобы все типы для моего проекта были повторно использованы, поэтому я могу ссылаться на них в разных функциях между файлами. Это самый близкий вопрос, который я нашел.
Как получить код VS для понимания JSDOC @typedef для нескольких файлов
Ответ 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
:
Кроме того, IntelliSense теперь также может предложить завершение кода на основе моих определений типов: