18

Can I convert TypeScript file to JavaScript file with JSDoc?
For example, if I have this main.ts file:

let x: string = "hello";
// This could be number or array of numbers
let y: number | number[];

It will be converted to something like this main.js file:

/**
 * @type {string}
 */
let x = "hello";
/**
 * This could be number or array of numbers
 * @type {number | number[]}
 */
let y;

And so on.
Is there a way to do that?
Thank you!

2 Answers2

10

While functionality like this is outside of TypeScript's scope, it is possible to make use of the Compiler API it does provide to interpret types and convert them to JSDoc documentation. You can find documentation on the Compiler API in the TypeScript GitHub repository.

(Alternatively, you can use the NPM package ts-to-jsdoc to handle this work for you!)

Disclaimer: I wrote ts-to-jsdoc. You can find the source code at https://github.com/futurGH/ts-to-jsdoc under the MIT license.

futur
  • 1,673
  • 5
  • 20
  • 2
    could you elaborate a bit on the "for good reason"? – Magne Oct 22 '21 at 10:25
  • any way to integrate this into https://www.npmjs.com/package/gulp-typescript? – M. Zoller May 06 '22 at 03:03
  • Not sure if I did it right but I've taken the code from OP and ran ts-to-jsdoc and no jsdoc can be found in the output. Your repository describes the project as converting "TypeScript code annotated with JSDoc" but OP did not have the code typed with JSDoc already. – HMR Aug 22 '23 at 19:11
  • 1
    @HMR You're right — ts-to-jsdoc currently doesn't annotate top-level variables, only functions, classes, interfaces, and types. Feel free to open an issue on the repo if you'd like and I can look into implementing that. – futur Aug 23 '23 at 21:02
0

Based on the description of this tool it could be useful for you since it seems to do exactly what you need, i.e. transpile TypeScript into plain ES code with JSDoc comments - have a look here:

https://github.com/SoftwareBrothers/better-docs#examples