Travailler avec CSV en TypeScript : guide complet
CSV (Comma-Separated Values) est l'un des formats les plus courants pour l'échange de données tabulaires. Dans l'écosystème TypeScript, il existe plusieurs bibliothèques matures qui permettent d'analyser, générer et transformer efficacement des fichiers CSV avec une prise en charge complète des types. Dans cet article, nous examinerons trois outils principaux : csv-parse, csv-stringify et papaparse, et nous analyserons des exemples pratiques de leur utilisation.
1. Bibliothèque csv-parse : analyse CSV avec typage
csv-parse fait partie de l'écosystème csv.js, l'une des bibliothèques les plus performantes pour l'analyse de CSV. Elle prend en charge les flux (streams), les séparateurs personnalisés et un typage strict via TypeScript.
Installation :
npm install csv-parsenpm install @types/csv-parse // pour TypeScript (si non inclus automatiquement)Exemple d'analyse d'une chaîne 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 Ivanov,ivan@example.com,302, Maria Petrova,maria@example.com,253,Alexeï Smirnov,alex@example.com,35`;
// Analyse avec indication explicite des typesconst records: User[] = parse(csvData, { columns: true, // première ligne — en-têtes skip_empty_lines: true, delimiter: ',', cast: true // conversion automatique des types (chaînes en nombres)});
console.log(records);// [// { id: 1, name: 'Ivan Ivanov', email: 'ivan@example.com', age: 30 },// { id: 2, name: 'Maria Petrova', email: 'maria@example.com', age: 25 },// { id: 3, name: 'Alexeï Smirnov', email: 'alex@example.com', age: 35 }// ]2. Bibliothèque csv-stringify : génération CSV à partir d'objets
csv-stringify est une bibliothèque complémentaire pour créer des chaînes et fichiers CSV à partir de tableaux d'objets ou de tuples. Idéale pour l'exportation de données.
Exemple de génération 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'], // ordre et filtrage des champs});
console.log(csvOutput);// sku,price,stock// PRD-001,1500,10// PRD-002,2500,5// PRD-003,800,203. Bibliothèque PapaParse : analyseur universel pour navigateur et Node.js
PapaParse est la bibliothèque la plus populaire pour travailler avec CSV en JavaScript/TypeScript. Elle fonctionne à la fois dans le navigateur et dans Node.js, prend en charge les gros fichiers via des flux, la détection automatique du séparateur et la gestion des erreurs.
Installation :
npm install papaparsenpm install @types/papaparseExemple avec traitement de fichier dans Node.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, // conversion automatique des types skipEmptyLines: true,});
if (result.errors.length > 0) { console.error('Erreurs d\'analyse :', result.errors);} else { console.log('Transactions :', result.data); // result.data — tableau d'objets Transaction}
// Analyse asynchrone avec flux pour les gros fichiersconst stream = fs.createReadStream('large-file.csv');Papa.parse(stream, Aussi dans la bibliothèque
Client Kafka Java : guide complet avec exemples
Génération de rapports PDF en JavaScript (Node.js) : Puppeteer, PDFKit, jsPDF
Client HTTP pour JavaScript (Node.js) : top bibliothèques 2025
Génération de PDF en TypeScript : bibliothèques, outils et exemples de code
Client Elasticsearch pour Go (Golang) : guide complet pour travailler avec ES