diff --git a/README.md b/README.md index dc30918d8..3f1a16114 100644 --- a/README.md +++ b/README.md @@ -10367,6 +10367,19 @@ const a = 'string'; */ const a = new Todo(); // Settings: {"jsdoc":{"mode":"typescript"}} + +/** + * @template A, [B=SomeDefault] + */ +class Foo { + /** + * @param {A} baz + * @return {B} + */ + bar (baz) { + } +} +// Settings: {"jsdoc":{"mode":"typescript"}} ```` diff --git a/src/jsdocUtils.js b/src/jsdocUtils.js index 5144d03aa..acf44494a 100644 --- a/src/jsdocUtils.js +++ b/src/jsdocUtils.js @@ -1291,7 +1291,7 @@ const parseClosureTemplateTag = (tag) => { return tag.name .split(',') .map((type) => { - return type.trim(); + return type.trim().replace(/^\[(?.*?)=.*\]$/u, '$'); }); }; diff --git a/test/rules/assertions/noUndefinedTypes.js b/test/rules/assertions/noUndefinedTypes.js index a2c48a376..808667070 100644 --- a/test/rules/assertions/noUndefinedTypes.js +++ b/test/rules/assertions/noUndefinedTypes.js @@ -1258,5 +1258,25 @@ export default { }, }, }, + { + code: ` + /** + * @template A, [B=SomeDefault] + */ + class Foo { + /** + * @param {A} baz + * @return {B} + */ + bar (baz) { + } + } + `, + settings: { + jsdoc: { + mode: 'typescript', + }, + }, + }, ], };