TypeScript स्वचालन के लिए आदर्श भाषा क्यों है
\nहर डेवलपर ने अपने जीवन में कम से कम एक बार 200 फ़ाइलों का नाम बदलने, दर्जनों पेजों से डेटा इकट्ठा करने या JSON को आवश्यक प्रारूप में लाने में घंटों बिताए हैं। रूटीन उत्पादकता और प्रेरणा को मार देती है। लेकिन एक अच्छी खबर है: TypeScript पर स्वचालन इन समस्याओं को जल्दी और सुंदर ढंग से हल करता है।
\nTypeScript केवल JavaScript पर एक ऐड-ऑन नहीं है। यह सख्त टाइपिंग, पढ़ने योग्य कोड और Node.js का शक्तिशाली इकोसिस्टम है। यदि आप Python में लिखते हैं, लेकिन स्वचालन के लिए कोई विकल्प ढूंढ रहे हैं, या पहले से TS के साथ काम कर रहे हैं और इसका अधिकतम लाभ उठाना चाहते हैं — यह लेख आपके लिए है। हम वास्तविक मामलों पर चर्चा करेंगे: वेब पेजों को पार्स करने से लेकर CLI उपयोगिताओं और टास्क शेड्यूलर बनाने तक।
\n\nकहाँ से शुरू करें: वातावरण सेटअप
\nTypeScript स्क्रिप्ट्स लिखने से पहले, पर्यावरण तैयार करना होगा। सुनिश्चित करें कि आपके पास Node.js (संस्करण 18+) और npm स्थापित हैं।
\n# TypeScript को वैश्विक रूप से स्थापित करना\nnpm install -g typescript\n\n# प्रोजेक्ट आरंभ करना\nmkdir auto-ts && cd auto-ts\nnpm init -y\nnpm install typescript @types/node ts-node --save-dev\n\nबुनियादी सेटिंग्स के साथ tsconfig.json फ़ाइल बनाएँ:
{\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अब आप src फ़ोल्डर में स्क्रिप्ट लिख सकते हैं और उन्हें ts-node src/script.ts के माध्यम से चला सकते हैं। यह किसी भी ts कार्य स्वचालन का आधार है।
केस 1: वेब पेजों का स्वचालित पार्सिंग
\nकल्पना करें: आपको एक समाचार साइट के मुख्य पृष्ठ से समाचार शीर्षक एकत्र करने हैं। मैन्युअल कॉपी-पेस्ट पुराना तरीका है। आइए cheerio और axios का उपयोग करके TypeScript में एक पार्सर लिखें।
npm install axios cheerio\n\nफ़ाइल src/parser.ts बनाएँ:
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(`नई ${items.length} समाचार मिलीं:`);\n items.forEach(item => console.log(`- ${item.title}`));\n})();\n\nइस TypeScript में पार्सिंग को आसानी से विस्तारित किया जा सकता है: CSV में रिकॉर्डिंग, Telegram पर भेजना या डेटाबेस में सहेजना जोड़ें। NewsItem की टाइपिंग कोड को विश्वसनीय और समझने योग्य बनाती है।
केस 2: फ़ाइलों का बैच प्रोसेसिंग
\nमान लीजिए, आपके पास सौ CSV फ़ाइलों वाला एक फ़ोल्डर है, जिन्हें डुप्लिकेट हटाकर एक में मर्ज करना है। मैन्युअल काम में एक दिन लगेगा। TypeScript पर स्वचालन सेकंडों में हो जाएगा।
\nnpm install fs-extra papaparse\n\nimport * 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