TypeScript में CSV के साथ कार्य: पूर्ण मार्गदर्शिका
CSV (कॉमा-सेपरेटेड वैल्यूज़) — सारणीबद्ध डेटा के आदान-प्रदान के लिए सबसे सामान्य प्रारूपों में से एक है। TypeScript इकोसिस्टम में कई परिपक्व लाइब्रेरीज़ मौजूद हैं जो टाइप्स के पूर्ण समर्थन के साथ CSV फ़ाइलों को कुशलतापूर्वक पार्स, जनरेट और ट्रांसफ़ॉर्म करने की अनुमति देती हैं। इस लेख में, हम तीन मुख्य टूल्स पर विचार करेंगे: csv-parse, csv-stringify और papaparse, साथ ही उनके उपयोग के व्यावहारिक उदाहरणों का विश्लेषण करेंगे।
1. csv-parse लाइब्रेरी: टाइपिफिकेशन के साथ CSV पार्सिंग
csv-parse — csv.js इकोसिस्टम का हिस्सा है, जो CSV को पार्स करने के लिए सबसे अधिक प्रदर्शनशील लाइब्रेरीज़ में से एक है। यह स्ट्रीम, कस्टम डिलीमीटर और TypeScript के माध्यम से सख्त टाइपिफिकेशन का समर्थन करता है।
स्थापना:
npm install csv-parsenpm install @types/csv-parse // TypeScript के लिए (यदि स्वचालित रूप से शामिल नहीं हैं)CSV स्ट्रिंग पार्स करने का उदाहरण:
import { parse } from 'csv-parse/sync';import { stringify } from 'csv-stringify/sync';
interface User { id: number; name: string; email: string; age: number;}
const csvData = `id,name,email,age1,इवान इवानोव,ivan@example.com,302,मारिया पेट्रोवा,maria@example.com,253,अलेक्सेई स्मिर्नोव,alex@example.com,35`;
// स्पष्ट टाइप निर्देश के साथ पार्सिंगconst records: User[] = parse(csvData, { columns: true, // पहली पंक्ति — हेडर skip_empty_lines: true, delimiter: ',', cast: true // स्वचालित टाइप रूपांतरण (स्ट्रिंग्स को संख्याओं में)});
console.log(records);// [// { id: 1, name: 'इवान इवानोव', email: 'ivan@example.com', age: 30 },// { id: 2, name: 'मारिया पेट्रोवा', email: 'maria@example.com', age: 25 },// { id: 3, name: 'अलेक्सेई स्मिर्नोव', email: 'alex@example.com', age: 35 }// ]2. csv-stringify लाइब्रेरी: ऑब्जेक्ट्स से CSV जनरेशन
csv-stringify — ऑब्जेक्ट्स या टपल्स के ऐरे से CSV स्ट्रिंग्स और फ़ाइलें बनाने के लिए एक युग्मित लाइब्रेरी है। यह डेटा निर्यात के लिए उपयुक्त है।
CSV जनरेशन का उदाहरण:
import { stringify } from 'csv-stringify/sync';
interface Product { sku: string; price: number; stock: number;}
const products: Product[] = [ { sku: 'PRD-001', price: 1500, stock: 10 }, { sku: 'PRD-002', price: 2500, stock: 5 }, { sku: 'PRD-003', price: 800, stock: 20 },];
const csvOutput = stringify(products, { header: true, columns: ['sku', 'price', 'stock'], // फ़ील्ड का क्रम और फ़िल्टरिंग});
console.log(csvOutput);// sku,price,stock// PRD-001,1500,10// PRD-002,2500,5// PRD-003,800,203. PapaParse लाइब्रेरी: ब्राउज़र और Node.js के लिए सार्वभौमिक पार्सर
PapaParse — JavaScript/TypeScript में CSV के साथ कार्य करने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह ब्राउज़र और Node.js दोनों में काम करती है, स्ट्रीम के माध्यम से बड़ी फ़ाइलों का समर्थन करती है, स्वचालित डिलीमीटर पहचान और त्रुटि प्रबंधन करती है।
स्थापना:
npm install papaparsenpm install @types/papaparseNode.js में फ़ाइल प्रोसेसिंग का उदाहरण:
import fs from 'fs';import Papa from 'papaparse';
interface Transaction { date: string; amount: number; category: string;}
const fileContent = fs.readFileSync('transactions.csv', 'utf-8');
const result = Papa.parse<Transaction>(fileContent, { header: true, dynamicTyping: true, // स्वचालित टाइप रूपांतरण skipEmptyLines: true,});
if (result.errors.length > 0) { console.error('पार्सिंग त्रुटियाँ:', result.errors);} else { console.log('लेन-देन:', result.data); // result.data — Transaction ऑब्जेक्ट्स का ऐरे}
// बड़ी फ़ाइलों के लिए स्ट्रीम के साथ अतुल्यकालिक पार्सिंगconst stream = fs.createReadStream('large-file.csv');Papa.parse(stream,