TypeScript में CSV के साथ कार्य: पूर्ण मार्गदर्शिका
\n\nCSV (Comma-Separated Values) सारणीबद्ध डेटा के आदान-प्रदान के लिए सबसे लोकप्रिय प्रारूपों में से एक है। TypeScript (और JavaScript) में CSV फ़ाइलों को पार्स करने, जनरेट करने और प्रोसेस करने के लिए कई शक्तिशाली लाइब्रेरीज़ मौजूद हैं। इस लेख में हम मुख्य टूल्स, उनकी क्षमताओं पर चर्चा करेंगे और व्यावहारिक उदाहरण प्रस्तुत करेंगे।
\n\nCSV के लिए लाइब्रेरीज़ का उपयोग क्यों करें?
\n\nJavaScript के अंतर्निहित साधन (जैसे split(',')) जटिल मामलों को ध्यान में नहीं रखते:
- \n
- फ़ील्ड के अंदर एस्केप किए गए कोट्स और कॉमा \n
- अलग-अलग डिलीमीटर (सेमीकोलन, टैब) \n
- अलग-अलग एन्कोडिंग और BOM \n
- मल्टी-लाइन वैल्यू \n
- लाइन एंडिंग के विभिन्न प्रकार (CRLF, LF) \n
पेशेवर लाइब्रेरीज़ इन सभी समस्याओं का समाधान करती हैं और डेटा के साथ काम करने के लिए एक सुविधाजनक API प्रदान करती हैं।
\n\n1. csv-parse — Node.js और ब्राउज़र में CSV पार्सिंग
\n\ncsv-parse csv.js इकोसिस्टम का हिस्सा है, जो पार्सिंग के लिए सबसे लोकप्रिय लाइब्रेरीज़ में से एक है। यह Node.js और ब्राउज़र (bundler के माध्यम से) दोनों में काम करती है।
इंस्टॉलेशन
\nnpm install csv-parse\n\nTypeScript के साथ उपयोग का उदाहरण
\nimport { parse } from 'csv-parse/sync';\nimport { readFileSync } from 'fs';\n\ninterface User {\n id: number;\n name: string;\n email: string;\n}\n\nconst csvData = readFileSync('users.csv', 'utf-8');\nconst records: User[] = parse(csvData, {\n columns: true, // पहली पंक्ति हेडर है\n skip_empty_lines: true,\n delimiter: ',',\n cast: (value, context) => {\n if (context.column === 'id') return parseInt(value, 10);\n return value;\n }\n});\n\nconsole.log(records);\n\n2. PapaParse — ब्राउज़र और Node.js के लिए सार्वभौमिक पार्सर
\n\nPapaParse एक लाइब्रेरी है जिसमें बड़ी फ़ाइलों (स्ट्रीमिंग प्रोसेसिंग), स्वचालित डिलीमीटर पहचान और व्यापक कॉन्फ़िगरेशन विकल्पों के लिए उत्कृष्ट समर्थन है।
\n\nइंस्टॉलेशन
\nnpm install papaparse\n\nपरिणामों के टाइपिफिकेशन के साथ उदाहरण
\nimport Papa from 'papaparse';\n\ninterface Product {\n sku: string;\n price: number;\n quantity: number;\n}\n\nconst csvString = `sku,price,quantity\nABC-001,29.99,100\nABC-002,49.50,50`;\n\nconst result = Papa.parse<Product>(csvString, {\n header: true,\n dynamicTyping: true, // स्वचालित टाइप रूपांतरण\n skipEmptyLines: true\n});\n\nif (result.errors.length > 0) {\n console.error('पार्सिंग त्रुटियाँ:', result.errors);\n} else {\n result.data.forEach(product => {\n console.log(`उत्पाद ${product.sku}: ${product.price} रु.`);\n });\n}\n\n3. csv-stringify — डेटा से CSV जनरेशन
\n\nविपरीत कार्य के लिए — ऑब्जेक्ट्स के ऐरे से CSV बनाना — csv-stringify का उपयोग करें। यह भी csv.js इकोसिस्टम का हिस्सा है।
इंस्टॉलेशन
\nnpm install csv-stringify\n\nCSV जनरेशन का उदाहरण
\nimport { stringify } from 'csv-stringify/sync';\nimport { writeFileSync } from 'fs';\n\ninterface Order {\n orderId: number;\n customer: string;\n total: number;\n}\n\nconst orders: Order[] = [\n { orderId: 1001, customer: 'इवान पेत्रोव', total: 1500.50 },\n { orderId: 1002, customer: 'मारिया सिदोरोवा', total: 2300.00 },\n { orderId: 1003, customer: 'अलेक्सेई इवानोव', total: 890.75 }\n];\n\nconst csvOutput = stringify(orders, {\n header: true,\n columns: ['orderId', 'customer', 'total']\n});\n\nwriteFileSync('orders.csv', csvOutput, 'utf-8');\nconsole.log('CSV फ़ाइल सफलतापूर्वक बनाई गई');\n\n4. त्रुटि प्रबंधन और डेटा वैलिडेशन
\n\nCSV के साथ काम करते समय त्रुटियों को सही ढंग से संभालना महत्वपूर्ण है। डेटा जाँच के साथ एक उदाहरण देखें:
\n\nimport Papa from 'papaparse';\n\ninterface ValidatedRow {\n isValid: boolean;\n errors: s