Automatisation des tâches en TypeScript : comment arrêter de faire un travail ennuyeux à la main

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi TypeScript est le langage idéal pour l'automatisation

\n

Chaque développeur a au moins une fois dans sa vie passé des heures à renommer manuellement 200 fichiers, à collecter des données sur une dizaine de pages ou à mettre un JSON au format souhaité. La routine tue la productivité et la motivation. Mais il y a une bonne nouvelle : l'automatisation en TypeScript résout ces problèmes rapidement et élégamment.

\n

TypeScript n'est pas seulement une surcouche de JavaScript. C'est un typage strict, un code lisible et un écosystème Node.js puissant. Si vous écrivez en Python mais cherchez une alternative pour l'automatisation, ou si vous travaillez déjà avec TS et souhaitez en tirer le maximum, cet article est pour vous. Nous allons analyser des cas concrets : du parsing de pages web à la création d'utilitaires CLI et de planificateurs de tâches.

\n\n

Par où commencer : configuration de l'environnement

\n

Avant d'écrire des scripts TypeScript, vous devez préparer l'environnement. Assurez-vous d'avoir Node.js (version 18+) et npm installés.

\n
# Installation globale de TypeScript\nnpm install -g typescript\n\n# Initialisation du projet\nmkdir auto-ts && cd auto-ts\nnpm init -y\nnpm install typescript @types/node ts-node --save-dev\n
\n

Créez un fichier tsconfig.json avec les paramètres de base :

\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

Vous pouvez maintenant écrire des scripts dans le dossier src et les exécuter via ts-node src/script.ts. C'est la base pour toute automatisation de tâches ts.

\n\n

Cas 1 : Parsing automatique de pages web

\n

Imaginez : vous devez collecter les titres des actualités de la page d'accueil d'un site d'information. Le copier-coller manuel, c'est dépassé. Écrivons un parser en TypeScript en utilisant cheerio et axios.

\n
npm install axios cheerio\n
\n

Créons un fichier 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(`Trouvé ${items.length} actualités :`);\n  items.forEach(item => console.log(`- ${item.title}`));\n})();\n
\n

Ce parsing en TypeScript peut être facilement étendu : ajouter une écriture en CSV, un envoi vers Telegram ou une sauvegarde en base de données. Le typage NewsItem rend le code fiable et compréhensible.

\n\n

Cas 2 : Traitement par lots de fichiers

\n

Supposons que vous ayez un dossier contenant une centaine de fichiers CSV à fusionner en un seul, en supprimant les doublons. Le travail manuel prendrait une journée. L'automatisation en TypeScript s'en charge en une seconde.

\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