I want to specify a type in one file, and be able to reuse it in another one. I tried modules but it didn\'t work in VS Code. Is there any other solution? Just wanna have al
Since TypeScript 2.9 which is embedded in the newer VS Codes, it is possible by using the import
syntax in JSDoc, like so
/**
* @typedef {import("koa").Context} Context
*
* @typedef {Object} BodyparserOptions
* @prop {(ctx: Context) => boolean} [detectJSON] Custom json request detect function. Default `null`.
*/
Also VS Code should be picking up all types defined across the workspace.
I've had some success with using jsconfig.json and its include property in a plain JavaScript project in Visual Studio Code 1.33.1
{
"include": [
"src/**/*.js"
]
}
Given the following JavaScript project:
src/
├── types/
| ├── person.js
| ├── question.js
|
├── answer.js
├── jsconfig.json
Where both question.js
and person.js
are type definitions:
person.js
/**
* @typedef {object} Person
* @property {string} firstName
* @property {string} lastName
*/
question.js
/**
* @typedef {object} Question
* @property {Person} askedBy
* @property {string} text
*/
And answer.js
is a function that accepts a question and return an answer:
/**
* Takes a question and return an answer
* @param {Question} question
*/
function answer(question) {
return 42;
}
As you can see in the first screencast I do get IntelliSense support when hovering over the Question
type notation:
On top of that IntelliSense is also now able to offer code completion based on my types definitions: