Para documentar proyectos en TypeScript y JavaScript de forma que se genere documentación automáticamente, puedes usar JSDoc junto con herramientas como TypeDoc o ESDoc. Estas herramientas leen los comentarios JSDoc y generan documentación en HTML, Markdown u otros formatos.
Aquí tienes una guía práctica:
1. Instala TypeDoc
Si estás trabajando con TypeScript, TypeDoc es la herramienta más recomendada. Instálala con:
npm install --save-dev typedoc
Para JavaScript puedes optar por herramientas como JSDoc o ESDoc.
2. Configura JSDoc en tu código
Usa comentarios JSDoc para documentar tus funciones, clases, variables y más.
Ejemplo básico para funciones:
/** * Suma dos números y devuelve el resultado. * * @param {number} a - El primer número. * @param {number} b - El segundo número. * @returns {number} La suma de los dos números. */ export function suma(a: number, b: number): number { return a + b; }
Documentación para clases:
/** * Clase que representa un coche. */ export class Coche { /** * Marca del coche. */ public marca: string; /** * Modelo del coche. */ public modelo: string; /** * Crea una instancia de un coche. * * @param {string} marca - La marca del coche. * @param {string} modelo - El modelo del coche. */ constructor(marca: string, modelo: string) { this.marca = marca; this.modelo = modelo; } /** * Devuelve una descripción del coche. * * @returns {string} Descripción del coche. */ getDescripcion(): string { return `Este coche es un ${this.marca} ${this.modelo}.`; } }
Documentación para tipos y enums:
/** * Los posibles estados de un pedido. * * @enum {string} */ export enum EstadoPedido { PENDIENTE = "pendiente", EN_PROGRESO = "en progreso", COMPLETADO = "completado", }
Documentación para objetos complejos:
/** * Representa un usuario. * * @typedef {Object} Usuario * @property {string} id - El ID del usuario. * @property {string} nombre - El nombre del usuario. * @property {number} edad - La edad del usuario. */
3. Configurar TypeDoc
Crea un archivo de configuración typedoc.json
para ajustar la salida y las opciones:
{ "entryPoints": ["src/index.ts"], "out": "docs", "includeVersion": true, "excludePrivate": true, "tsconfig": "tsconfig.json" }
Ejecuta TypeDoc con:
npx typedoc
Esto generará la documentación en la carpeta docs
.
4. Buenas prácticas para escribir documentación
- Sé claro y conciso: Describe qué hace una función o clase y sus parámetros.
- Usa etiquetas adecuadas: Algunas de las etiquetas más comunes son:
@param
– Describe un parámetro.@returns
– Describe el valor de retorno.@example
– Proporciona un ejemplo de uso.@deprecated
– Marca algo como obsoleto.@see
– Añade referencias adicionales.@throws
– Indica errores lanzados por una función.
Ejemplo avanzado:
/** * Divide dos números. * * @param {number} numerador - El numerador. * @param {number} denominador - El denominador (debe ser distinto de 0). * @returns {number} El resultado de la división. * @throws {Error} Si el denominador es 0. * @example * // División simple * divide(6, 2); // 3 */ export function divide(numerador: number, denominador: number): number { if (denominador === 0) { throw new Error("El denominador no puede ser 0."); } return numerador / denominador; }
5. Documentar JavaScript sin TypeScript
Aunque TypeScript ya ofrece tipos, en JavaScript puro puedes usar JSDoc con etiquetas explícitas para simular el tipado.
Ejemplo en JavaScript:
/** * Multiplica dos números. * * @param {number} a - El primer número. * @param {number} b - El segundo número. * @returns {number} El resultado de la multiplicación. */ function multiplicar(a, b) { return a * b; }
Deja un comentario