{"slug": "jsdoc", "name": "JSDoc", "category": "notes", "category_name": "Notes and knowledge", "description": "", "recommenders": 3, "commenters": 4, "warners": 1, "score": 1.633, "rising": -0.98, "first": "2025-12-14", "latest": "2025-12-15", "why": "It's awesome stuff, and I'm happy that TypeScript works so well with JSDoc!", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 0, "compare": 0, "warn": 1}, "spark": [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "It's awesome stuff, and I'm happy that TypeScript works so well with JSDoc!", "icon": false, "domain": null, "github_repo": null, "official_url": "https://jsdoc.app", "pricing": "", "aliases": ["JSDoc"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 740351648, "item_id": 46271978, "url": "https://news.ycombinator.com/item?id=46271978", "by": "w3news", "date": "2025-12-15", "stance": "recommend", "quote": "For me the JSDoc has more benefits.", "excerpt": "Thanks, I use JSDoc for several years, and also validate it with Typescript. So I just write plain Javascript with JSDoc, with no build step. Typescript only validates the types, and not transforming the code. Did you also know that you can import Typescript types/interfaces in JSDoc? So for me typescript is not a language anymore, I use only the tool to validate the types. Best thing for me was not removing the code", "context": "has used JSDoc for several years", "use_case": "type annotations in plain JavaScript", "switched_from": "", "story": "JSDoc is TypeScript"}, {"id": 740296848, "item_id": 46268553, "url": "https://news.ycombinator.com/item?id=46268553", "by": "etoxin", "date": "2025-12-14", "stance": "recommend", "quote": "I also use plain JSDoc for documentation.", "excerpt": "So, some history. When SPA's started to boom on the web JSDoc was a life saver for typing. Application state was getting more complex. We needed more guard rails. Then Google Closure Compiler came along which added type safety via JSDOC and TS came along with (TS)JSDoc support and it's own TS syntax. The community chose native TS and Google Closure compiler slipped away into the background. So (TS)JSDoc support is a ", "context": "", "use_case": "code documentation", "switched_from": "", "story": "JSDoc is TypeScript"}, {"id": 740290192, "item_id": 46268137, "url": "https://news.ycombinator.com/item?id=46268137", "by": "auxiliarymoose", "date": "2025-12-14", "stance": "recommend", "quote": "It's awesome stuff, and I'm happy that TypeScript works so well with JSDoc!", "excerpt": "This is how I develop web software, and I've found it productive and maintainable. A bonus of this approach is that it clearly delineates what type information is available at runtime, vs what type information is just a comment. (especially useful when working with serialized data). I also like that it generally means all of the preconditions and postconditions for functions are in a single place (both the prose and ", "context": "", "use_case": "typing web software", "switched_from": "", "story": "JSDoc is TypeScript"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 740289472, "item_id": 46268092, "url": "https://news.ycombinator.com/item?id=46268092", "by": "g947o", "date": "2025-12-14", "stance": "warn", "quote": "I don't recommend anyone going in this other direction unless they understand what they are getting into.", "excerpt": "I work in a codebase that unfortunately does not support TypeScript. I use JSDoc extensively, although not with type check enabled (due to various limitations). I also work on other projects with TypeScript. My own experience is that the DX with \"real\" TypeScript is much, much better than JavaScript with JSDoc, without question. JavaScript with JSDoc is much more verbose, with a lot of limitations when types get long", "context": "works in a codebase without TypeScript support", "use_case": "typing JavaScript", "switched_from": "", "story": "JSDoc is TypeScript"}]}], "who": [{"by": "w3news", "context": "has used JSDoc for several years", "url": "https://news.ycombinator.com/item?id=46271978", "date": "2025-12-15"}], "tags": [], "use_cases": ["type annotations in plain javascript", "code documentation", "typing web software", "typing javascript"], "compared": [{"slug": "typescript", "name": "TypeScript", "co": 4, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=46266102", "title": "JSDoc is TypeScript", "mentions": 4}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"warn": 1, "recommend": 3}, "2026-01": {}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 740351648, "item_id": 46271978, "url": "https://news.ycombinator.com/item?id=46271978", "by": "w3news", "date": "2025-12-15", "stance": "recommend", "quote": "For me the JSDoc has more benefits.", "excerpt": "Thanks, I use JSDoc for several years, and also validate it with Typescript. So I just write plain Javascript with JSDoc, with no build step. Typescript only validates the types, and not transforming the code. Did you also know that you can import Typescript types/interfaces in JSDoc? So for me typescript is not a language anymore, I use only the tool to validate the types. Best thing for me was not removing the code", "context": "has used JSDoc for several years", "use_case": "type annotations in plain JavaScript", "switched_from": "", "story": "JSDoc is TypeScript"}, {"id": 740296848, "item_id": 46268553, "url": "https://news.ycombinator.com/item?id=46268553", "by": "etoxin", "date": "2025-12-14", "stance": "recommend", "quote": "I also use plain JSDoc for documentation.", "excerpt": "So, some history. When SPA's started to boom on the web JSDoc was a life saver for typing. Application state was getting more complex. We needed more guard rails. Then Google Closure Compiler came along which added type safety via JSDOC and TS came along with (TS)JSDoc support and it's own TS syntax. The community chose native TS and Google Closure compiler slipped away into the background. So (TS)JSDoc support is a ", "context": "", "use_case": "code documentation", "switched_from": "", "story": "JSDoc is TypeScript"}, {"id": 740290192, "item_id": 46268137, "url": "https://news.ycombinator.com/item?id=46268137", "by": "auxiliarymoose", "date": "2025-12-14", "stance": "recommend", "quote": "It's awesome stuff, and I'm happy that TypeScript works so well with JSDoc!", "excerpt": "This is how I develop web software, and I've found it productive and maintainable. A bonus of this approach is that it clearly delineates what type information is available at runtime, vs what type information is just a comment. (especially useful when working with serialized data). I also like that it generally means all of the preconditions and postconditions for functions are in a single place (both the prose and ", "context": "", "use_case": "typing web software", "switched_from": "", "story": "JSDoc is TypeScript"}, {"id": 740289472, "item_id": 46268092, "url": "https://news.ycombinator.com/item?id=46268092", "by": "g947o", "date": "2025-12-14", "stance": "warn", "quote": "I don't recommend anyone going in this other direction unless they understand what they are getting into.", "excerpt": "I work in a codebase that unfortunately does not support TypeScript. I use JSDoc extensively, although not with type check enabled (due to various limitations). I also work on other projects with TypeScript. My own experience is that the DX with \"real\" TypeScript is much, much better than JavaScript with JSDoc, without question. JavaScript with JSDoc is much more verbose, with a lot of limitations when types get long", "context": "works in a codebase without TypeScript support", "use_case": "typing JavaScript", "switched_from": "", "story": "JSDoc is TypeScript"}]}