Microsoft/TypeScript

JSDoc @type completion not working inside function argument

Open

#62.281 geöffnet am 13. Aug. 2025

Auf GitHub ansehen
 (0 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)TypeScript (6.726 Forks)batch import
Domain: JSDocHelp WantedPossible Improvement

Repository-Metriken

Stars
 (48.455 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)

Beschreibung

🔎 Search Terms

jsdoc, completion

🕗 Version & Regression Information

Never seems to have worked

⏯ Playground Link

No response

💻 Code

JSDoc has some completion issues with completions like this:

function someFunc(/** @type {^cursor here^} **/) {}

❌ Does not work - @type completion (in function argument) from @import with named argument

///<reference path="fourslash.ts" />

// @allowJS: true
// @checkJs: true
// @module: esnext

// @filename: ./a.ts
////export interface ABC {}

// @filename: ./b.js
/////** @import * as t from "./a" */
////function someFunc(/** @type {t./**/} */arg) {}

verify.completions({
    marker: "",
    includes: "ABC",
});

✅ Works - @type completion (in function argument) from @typedef and with named argument

///<reference path="fourslash.ts" />

// @allowJS: true
// @checkJs: true
// @module: esnext

// @filename: ./b.js
/////** @typedef {number} SomeNumber */
////function someFunc(/** @type {S/**/} */arg) {}

verify.completions({
    marker: "",
    includes: "SomeNumber",
});

✅ Works - @type completion (not part of function argument) from @import completion inside

///<reference path="fourslash.ts" />

// @allowJS: true
// @checkJs: true
// @module: esnext

// @filename: ./a.ts
////export interface ABC {}

// @filename: ./b.js
/////** @import * as t from "./a" */
/////** @type {t./**/} */

verify.completions({
    marker: "",
    includes: "ABC",
});

❌ Does not work - @type completion (in function argument) from @import (argument not named yet)

///<reference path="fourslash.ts" />

// @allowJS: true
// @checkJs: true
// @module: esnext

// @filename: ./a.ts
////export interface ABC {}

// @filename: ./b.js
/////** @import * as t from "./a" */
////function someFunc(/** @type {t./**/} */) {}

verify.completions({
    marker: "",
    includes: "ABC",
});

❌ Does not work - @type completion (in function argument) @typedef (argument not named yet)

///<reference path="fourslash.ts" />

// @allowJS: true
// @checkJs: true
// @module: esnext

// @filename: ./b.js
/////** @typedef {number} SomeNumber */
////function someFunc(/** @type {S/**/} */) {}

verify.completions({
    marker: "",
    includes: "SomeNumber",
});

🙁 Actual behavior

See above, completions are missing.

🙂 Expected behavior

See above, completions are present.

Additional information about the issue

No response

Contributor Guide