Automatización de tareas en TypeScript: cómo dejar de hacer trabajo aburrido manualmente

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Por qué TypeScript es el lenguaje ideal para la automatización

\n

Cada desarrollador al menos una vez en la vida ha pasado horas renombrando manualmente 200 archivos, recopilando datos de una docena de páginas o transformando JSON al formato deseado. La rutina mata la productividad y la motivación. Pero hay una buena noticia: la automatización en TypeScript resuelve estos problemas de forma rápida y elegante.

\n

TypeScript no es solo una extensión de JavaScript. Es tipado estricto, código legible y un potente ecosistema Node.js. Si programas en Python pero buscas una alternativa para la automatización, o ya trabajas con TS y quieres aprovecharlo al máximo, este artículo es para ti. Analizaremos casos reales: desde scraping de páginas web hasta la creación de utilidades CLI y planificadores de tareas.

\n\n

Por dónde empezar: configuración del entorno

\n

Antes de escribir scripts de TypeScript, debes preparar el entorno. Asegúrate de tener instalados Node.js (versión 18+) y npm.

\n
# Instalación global de TypeScript\nnpm install -g typescript\n\n# Inicialización del proyecto\nmkdir auto-ts && cd auto-ts\nnpm init -y\nnpm install typescript @types/node ts-node --save-dev\n
\n

Crea un archivo tsconfig.json con la configuración básica:

\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "strict": true,\n    "esModuleInterop": true\n  },\n  "include": ["src/**/*"]\n}\n
\n

Ahora puedes escribir scripts en la carpeta src y ejecutarlos con ts-node src/script.ts. Esta es la base para cualquier automatización de tareas ts.

\n\n

Caso 1: Scraping automático de páginas web

\n

Imagina: necesitas recopilar los titulares de noticias de la página principal de un sitio de noticias. El copiar y pegar manual es cosa del pasado. Escribamos un scraper en TypeScript usando cheerio y axios.

\n
npm install axios cheerio\n
\n

Creemos el archivo src/parser.ts:

\n
import axios from 'axios';\nimport * as cheerio from 'cheerio';\n\ninterface NewsItem {\n  title: string;\n  link: string;\n}\n\nasync function parseNews(url: string): Promise<NewsItem[]> {\n  const { data } = await axios.get(url);\n  const $ = cheerio.load(data);\n  const news: NewsItem[] = [];\n\n  $('h2.news-title a').each((i, el) => {\n    news.push({\n      title: $(el).text().trim(),\n      link: $(el).attr('href') || '',\n    });\n  });\n\n  return news;\n}\n\n(async () => {\n  const items = await parseNews('https://example-news-site.com');\n  console.log(`Se encontraron ${items.length} noticias:`);\n  items.forEach(item => console.log(`- ${item.title}`));\n})();\n
\n

Este scraping en TypeScript se puede ampliar fácilmente: agregar escritura a CSV, envío a Telegram o almacenamiento en base de datos. El tipado de NewsItem hace que el código sea robusto y comprensible.

\n\n

Caso 2: Procesamiento por lotes de archivos

\n

Supongamos que tienes una carpeta con cien archivos CSV que necesitas combinar en uno solo, eliminando duplicados. El trabajo manual te llevaría un día. La automatización en TypeScript lo hará en segundos.

\n
npm install fs-extra papaparse\n
\n
import * as fs from 'fs-extra';\nimport * as path from 'path';\nimport Papa from 'papaparse';\n\ninterface Row {\n  [key: string]: string;\n}\n\nasync function mergeCSV(inputDir: string, outputFile: string): Promise<void> {\n  const files = (await fs.readdir(inputDir)).filter(f => f.endsWith('.csv'));\n  const allRows: Row[] = [];\n  const seen = new Set<string>();\n\n  for (const file of files) {\n    const content = await fs.readFile(path.join(inputDir, file), 'utf-8');\n    const parsed = Papa.parse<Row>(content, { header: true });\n    \n    for (const row of parsed.data) {\n      const key = JSON.stringify(row);\n      if (!seen.has(key)) {\n        seen.add(key);\n        allRows.push(row);\n                

Blogs

Book Recommendations