TypeScript error

TS8024: A @param tag that names no parameter

  • Error TS8024
  • Tested with TypeScript 5.9

error TS8024: JSDoc '@param' tag has name 'name', but there is no parameter with that name. is reported when a @param tag names a parameter the function does not have. JSDoc matches tags to parameters by name, so a renamed parameter loses its type silently in plain JSDoc tools; the checker reports it.

Two errors usually appear together: TS8024 on the tag, and TS7006 on the parameter, which now has no type. TS8024 is reported inside the comment, on the tag's line.

At a glance

CodeTS8024
MessageJSDoc '@param' tag has name '{0}', but there is no parameter with that name.
TypeScript's categoryerror
Listed underJavaScript files only
Turned on by No option: every checked file reports it
In .js files Reported when the file is checked: checkJs in jsconfig.json, or // @ts-check at the top of the file

The message is TypeScript's own text from its diagnostic messages file (Apache-2.0); {0} is filled in by tsc for each error.

What it looks like

greet.js Error confirmed 5.9.3 TypeScript 5.9.3, run 21 October 2026: greet.js(2,21): error TS8024: JSDoc '@param' tag has name 'name', but there is no parameter with that name. greet.js(4,23): error TS7006: Parameter 'fullName' implicitly has an 'any' type. 6.0.3 TypeScript 6.0.3, run 21 October 2026: the same as 5.9.3. greet.js(2,21): error TS8024: JSDoc '@param' tag has name 'name', but there is no parameter with that name. greet.js(4,23): error TS7006: Parameter 'fullName' implicitly has an 'any' type. 7.0.2 TypeScript 7.0.2, run 21 October 2026: the same as 5.9.3. greet.js(2,21): error TS8024: JSDoc '@param' tag has name 'name', but there is no parameter with that name. greet.js(4,23): error TS7006: Parameter 'fullName' implicitly has an 'any' type. checked 21 October 2026
/** @param {string} name */error TS8024: JSDoc '@param' tag has name 'name', but there is no parameter with that name.
export function greet(fullName) {error TS7006: Parameter 'fullName' implicitly has an 'any' type.
  return `Hello, ${fullName}!`;
}
A @param tag whose name does not match the parameter.
jsconfig.json for this example
{
  "compilerOptions": {
    "checkJs": true,
    "noEmit": true,
    "strict": true,
    "target": "es2022",
    "module": "nodenext",
    "types": []
  },
  "include": ["*.js"]
}

What causes it

  • The parameter was renamed and the tag was not (or the other way round).
  • A tag documents a destructured parameter's property with a plain name instead of options.name.

How to fix it

Give the tag the parameter's name

Change @param {string} name to @param {string} fullName. Editors that run TypeScript's language service rename both when you rename the parameter with the rename command instead of by hand.

greet.js TypeScript 5.9.3 TypeScript 5.9.3, run 21 October 2026: No errors. 6.0.3 TypeScript 6.0.3, run 21 October 2026: the same as 5.9.3. No errors. 7.0.2 TypeScript 7.0.2, run 21 October 2026: the same as 5.9.3. No errors. checked 21 October 2026
/**
 * @param {string} fullName
 */
export function greet(fullName) {
  return `Hello, ${fullName}!`;
}
The tag names the parameter.
jsconfig.json for this example
{
  "compilerOptions": {
    "checkJs": true,
    "noEmit": true,
    "strict": true,
    "target": "es2022",
    "module": "nodenext",
    "types": []
  },
  "include": ["*.js"]
}

Gotchas

  • For a function that reads arguments instead of named parameters, the checker adds a hint to a similar message (TS8029): the tag would match arguments if it had an array type.
  • The example writes the comment on one line so this site's marker can sit above the tag; tsc reports the tag's line in a multi-line comment just the same.

Sources

Last reviewed 20 October 2026.