Por que TypeScript é a linguagem ideal para automação
Todo desenvolvedor pelo menos uma vez na vida passou horas renomeando manualmente 200 arquivos, coletando dados de dezenas de páginas ou convertendo JSON para o formato desejado. A rotina mata a produtividade e a motivação. Mas há uma boa notícia: automação em TypeScript resolve esses problemas de forma rápida e elegante.
TypeScript não é apenas um superset do JavaScript. É tipagem forte, código legível e um ecossistema Node.js poderoso. Se você programa em Python, mas busca uma alternativa para automação, ou já trabalha com TS e quer extrair o máximo dele, este artigo é para você. Vamos abordar casos reais: desde parsing de páginas web até criação de utilitários CLI e agendadores de tarefas.
Por onde começar: configuração do ambiente
Antes de escrever scripts TypeScript, é preciso preparar o ambiente. Certifique-se de ter Node.js (versão 18+) e npm instalados.
# Instalação global do TypeScriptnpm install -g typescript
# Inicialização do projetomkdir auto-ts && cd auto-tsnpm init -ynpm install typescript @types/node ts-node --save-devCrie o arquivo tsconfig.json com configurações básicas:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true }, "include": ["src/**/*"]}Agora você pode escrever scripts na pasta src e executá-los com ts-node src/script.ts. Esta é a base para qualquer automação de tarefas ts.
Caso 1: Parsing automático de páginas web
Imagine: você precisa coletar títulos de notícias da página inicial de um site de notícias. Copiar e colar manualmente é coisa do passado. Vamos escrever um parser em TypeScript usando cheerio e axios.
npm install axios cheerioCriaremos o arquivo src/parser.ts:
import axios from 'axios';import * as cheerio from 'cheerio';
interface NewsItem { title: string; link: string;}
async function parseNews(url: string): Promise<NewsItem[]> { const { data } = await axios.get(url); const $ = cheerio.load(data); const news: NewsItem[] = [];
$('h2.news-title a').each((i, el) => { news.push({ title: $(el).text().trim(), link: $(el).attr('href') || '', }); });
return news;}
(async () => { const items = await parseNews('https://example-news-site.com'); console.log(`Encontradas ${items.length} notícias:`); items.forEach(item => console.log(`- ${item.title}`));})();Este parsing em TypeScript pode ser facilmente expandido: adicionar gravação em CSV, envio para Telegram ou salvamento em banco de dados. A tipagem NewsItem torna o código confiável e compreensível.
Caso 2: Processamento em lote de arquivos
Suponha que você tenha uma pasta com cem arquivos CSV que precisam ser mesclados em um único, removendo duplicatas. O trabalho manual levaria um dia. A automação em TypeScript resolve em segundos.
npm install fs-extra papaparseimport * as fs from 'fs-extra';import * as path from 'path';import Papa from 'papaparse';
interface Row { [key: string]: string;}
async function mergeCSV(inputDir: string, outputFile: string): Promise<void> { const files = (await fs.readdir(inputDir)).filter(f => f.endsWith('.csv')); const allRows: Row[] = []; const seen = new Set<string>();
for (const file of files) { const content = await fs.readFile(path.join(inputDir, file), 'utf-8'); const parsed = Papa.parse<Row>(content, { header: true }); for (const row of parsed.data) { const key = JSON.stringify(row); if (!seen.has(key)) { seen.add(key); allRows.push(row);