Arbeiten mit CSV in TypeScript: vollständige Anleitung
CSV (Comma-Separated Values) ist eines der am weitesten verbreiteten Formate für den Austausch von Tabellendaten. Im TypeScript-Ökosystem stehen mehrere leistungsstarke Bibliotheken zur Verfügung, mit denen Sie CSV-Dateien mit vollständiger Typunterstützung lesen, schreiben und umwandeln können. In diesem Artikel werden wir die wichtigsten Werkzeuge, ihre Installation und praktische Beispiele behandeln.
Beliebte Bibliotheken für die Arbeit mit CSV
Die am häufigsten verwendeten Bibliotheken in der TypeScript/Node.js-Umgebung:
csv-parse— Teil descsv-Pakets, zuverlässiger Parser mit Stream-Unterstützungpapaparse— universeller Parser für Browser und Node.jscsv-stringify— Generator für CSV aus Arrays/Objektencsvtojson— Konverter von CSV zu JSON mit Typisierung
Installation und Einrichtung
Für TypeScript-Projekte erfolgt die Installation über npm oder yarn:
npm install csv-parse csv-stringify papaparse @types/papaparseWenn Sie csv-parse verwenden, sind keine zusätzlichen Typen erforderlich – die Bibliothek bietet integrierte TypeScript-Unterstützung.
Beispiel 1: CSV-Parsing mit csv-parse
Die Bibliothek csv-parse eignet sich dank der Stream-API hervorragend für die Arbeit mit großen Dateien. Betrachten wir ein einfaches Beispiel:
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, // erste Zeile sind Überschriften 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: 'Ivan', email: 'ivan@example.com', age: 30 },// { id: 2, name: 'Maria', email: 'maria@example.com', age: 25 }// ]Beispiel 2: CSV-Generierung mit Typisierung
Verwenden Sie csv-stringify zum Erstellen von CSV-Dateien. Definieren wir einen Datentyp und generieren einen String:
import { stringify } from 'csv-stringify/sync';
interface Product { productId: string; name: string; price: number; inStock: boolean;}
const products: Product[] = [ { productId: 'P001', name: 'Laptop', price: 75000, inStock: true }, { productId: 'P002', name: 'Maus', price: 1500, inStock: false }, { productId: 'P003', name: 'Tastatur', price: 3500, inStock: true }];
const csvOutput = stringify(products, { header: true, columns: ['productId', 'name', 'price', 'inStock']});
console.log(csvOutput);// productId,name,price,inStock// P001,Laptop,75000,true// P002,Maus,1500,false// P003,Tastatur,3500,trueBeispiel 3: Verwendung von PapaParse im Browser
PapaParse ist ideal für die clientseitige CSV-Verarbeitung. Beispiel mit Dateiupload über ein Input-Element:
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, // automatische Typkonvertierung skipEmptyLines: true, complete: (result) => { console.log('Parsing abgeschlossen:', result.data); // result.data — Array von Transaction-Objekten }, error: (error) => { console.error('Parsing-Fehler:', error); } });});Beispiel 4:
Auch in der Bibliothek
Internationalisierung (i18n) in Node.js: i18next und polyglot
CLI-Frameworks für Go (Golang): Ein vollständiger Überblick über Tools zur Erstellung von Konsolenanwendungen
Sharp für JavaScript (Node.js): Komplettguide mit Beispielen
OpenCV C++: Komplettanleitung mit Beispielen