TypeScript में CSV के साथ काम करना: पूर्ण गाइड
CSV (Comma-Separated Values) — टेबुलर डेटा के आदान-प्रदान के लिए सबसे आम फ़ॉर्मेट में से एक है। TypeScript इकोसिस्टम में कई शक्तिशाली लाइब्रेरीज़ उपलब्ध हैं जो टाइप्स के पूर्ण समर्थन के साथ CSV फ़ाइलों को पढ़ने, लिखने और रूपांतरित करने की अनुमति देती हैं। इस लेख में हम मुख्य टूल्स, उनकी स्थापना और व्यावहारिक उदाहरणों पर चर्चा करेंगे।
CSV के साथ काम करने के लिए लोकप्रिय लाइब्रेरीज़
TypeScript/Node.js वातावरण में सबसे अधिक उपयोग की जाने वाली लाइब्रेरीज़:
csv-parse—csvसेट का हिस्सा, स्ट्रीम समर्थन के साथ विश्वसनीय पार्सरpapaparse— ब्राउज़र और Node.js के लिए सार्वभौमिक पार्सरcsv-stringify— ऐरे/ऑब्जेक्ट से CSV जनरेटरcsvtojson— टाइपिंग के साथ CSV को JSON में कनवर्टर
स्थापना और सेटअप
TypeScript प्रोजेक्ट्स के लिए, npm या yarn के माध्यम से स्थापना की जाती है:
npm install csv-parse csv-stringify papaparse @types/papaparseयदि आप csv-parse का उपयोग करते हैं, तो अतिरिक्त टाइप्स की आवश्यकता नहीं है — लाइब्रेरी में TypeScript के लिए अंतर्निहित समर्थन है।
उदाहरण 1: csv-parse के साथ CSV पार्सिंग
csv-parse लाइब्रेरी stream API के कारण बड़ी फ़ाइलों के साथ काम करने के लिए उपयुक्त है। आइए एक बुनियादी उदाहरण देखें:
import { parse } from 'csv-parse/sync';import * as fs from 'fs';
interface User { id: number; name: string; email: string; age: number;}
const csvData = fs.readFileSync('users.csv', 'utf-8');
const records: User[] = parse(csvData, { columns: true, // पहली पंक्ति — हेडर skip_empty_lines: true, delimiter: ',', cast: (value, context) => { if (context.column === 'id' || context.column === 'age') { return Number(value); } return value; }});
console.log(records);// [// { id: 1, name: 'इवान', email: 'ivan@example.com', age: 30 },// { id: 2, name: 'मारिया', email: 'maria@example.com', age: 25 }// ]उदाहरण 2: टाइपिंग के साथ CSV जनरेशन
CSV फ़ाइलें बनाने के लिए csv-stringify का उपयोग करें। आइए डेटा प्रकार परिभाषित करें और एक स्ट्रिंग जनरेट करें:
import { stringify } from 'csv-stringify/sync';
interface Product { productId: string; name: string; price: number; inStock: boolean;}
const products: Product[] = [ { productId: 'P001', name: 'लैपटॉप', price: 75000, inStock: true }, { productId: 'P002', name: 'माउस', price: 1500, inStock: false }, { productId: 'P003', name: 'कीबोर्ड', price: 3500, inStock: true }];
const csvOutput = stringify(products, { header: true, columns: ['productId', 'name', 'price', 'inStock']});
console.log(csvOutput);// productId,name,price,inStock// P001,लैपटॉप,75000,true// P002,माउस,1500,false// P003,कीबोर्ड,3500,trueउदाहरण 3: ब्राउज़र में PapaParse का उपयोग
PapaParse क्लाइंट-साइड CSV प्रोसेसिंग के लिए आदर्श है। input के माध्यम से फ़ाइल अपलोड करने का उदाहरण:
import Papa from 'papaparse';
interface Transaction { date: string; amount: number; category: string; description: string;}
const fileInput = document.getElementById('csvInput') as HTMLInputElement;
fileInput.addEventListener('change', (event) => { const file = (event.target as HTMLInputElement).files?.[0]; if (!file) return;
Papa.parse<Transaction>(file, { header: true, dynamicTyping: true, // स्वचालित प्रकार रूपांतरण skipEmptyLines: true, complete: (result) => { console.log('पार्सिंग पूर्ण:', result.data); // result.data — Transaction ऑब्जेक्ट्स की ऐरे }, error: (error) => { console.error('पार्सिंग त्रुटि:', error); } });});