Skip to content

Add initializer property to JSDocParameterTag node #61373

@AlfonzAlfonz

Description

@AlfonzAlfonz

🔍 Search Terms

param, parameter, argument, jsdoc, initializer, default value, parameter

✅ Viability Checklist

⭐ Suggestion

Add an optional initializer property to the JSDocParameterTag, which will contain the default value of the param tag.

For a function:

/**
 * @param {string} [p="test"] - An optional param with a default value
 */
const abc = (p) => {};

The initializer property will be test.

This is a parity change with the Parameter node, which has initializer property for initializer in the parameter declaration:

const abc = (p: string = "test") => {};

📃 Motivating Example

Adding the initializer property to the JSDocParameterTag makes it possible to indicate default value of any overloaded function or function declaration, which was previously impossible. This adds the same property which was previously only available on the Parameter node. So IDEs or other tools built on TypeScript compiler now can easily communicate the default value of the parameter.

Since the default value of the parameter is currently already parsed, it should by trivial to just add it to the node as a new property and shouldn’t cause any performance issues.

💻 Use Cases

  1. What do you want to use this for?
    This can be used by IDEs or other tooling (such as documentation generators) to show default value of the parameter, which rely on TypeScript compiler.
    In my use case I’m building a documentation generator which outputs parameter table for functions with types, default values and descriptions. For default values I’m using the initializer of the function and if it’s not specified I would like the default value from the param tag.

  2. What shortcomings exist with current approaches?

    There is no way how to access default values of overloaded methods or method declarations. This is also true for overloaded methods where initializer is not permitted in the parameter itself.

  3. What workarounds are you using in the meantime?

    The tools which want to use this have to parse the jsdoc parameter themselves.

If this issue gets approved I would gladly submit a PR for this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Awaiting More FeedbackThis means we'd like to hear from more people who would be helped by this featureSuggestionAn idea for TypeScript

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions