How to get VS Code to understand JSDOC's @typedef across multiple files

后端 未结 2 1805
自闭症患者
自闭症患者 2020-12-10 10:45

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

相关标签:
2条回答
  • 2020-12-10 11:28

    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.

    0 讨论(0)
  • 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:

    0 讨论(0)
提交回复
热议问题