Skip to content

Diagnostic code 8030 being incorrectly generated using JSDoc @type on a function. #63754

Description

@Arashiryuu

🔎 Search Terms

Diagnostic 8030 is being generated incorrectly when using JSDoc @type on a method when the type is being referred to from an interface. This is using the new tsc LSP - version 7.0.2.

🕗 Version & Regression Information

  • This changed between versions 7.0.0-dev.260707.2 and 7.0.2.
  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about new native issues being transferred into the main typescript repo.

⏯ Playground Link

No response

💻 Code

// types.ts
interface Example {
  method (): number;
}
export {};

// code.js
const exampleFns = {
  /**
   * @type {Example['method']} // A JSDoc `@type` tag on a function must have a signature with the correct number of arguments.
   */
  method () {
    return Math.random();
  }
};

🙁 Actual behavior

in this example, the diagnostic and LSP info does not tell the user that typescript is internally suffixing | undefined to the type. As such wrapping the type in NonNullable<T> removes the error diagnostic, I do not believe this to be intended behaviour as previous iterations the golang native LSP tsgo (7.0.0-dev.260707.2) did not produce this diagnostic, nor did previous versions of typescript.

🙂 Expected behavior

The type should be properly referenced with no additional suffixing of types, as it used to.

Additional information about the issue

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugA bug in TypeScriptFix AvailableA PR has been opened for this issue

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions