Trabajo con CSV en TypeScript: bibliotecas, análisis y generación de datos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con CSV en TypeScript: guía completa



CSV (Comma-Separated Values) es uno de los formatos más comunes para el intercambio de datos tabulares. En el ecosistema de TypeScript existen varias bibliotecas maduras que permiten analizar, generar y transformar archivos CSV de manera eficiente con soporte completo de tipos. En este artículo, revisaremos tres herramientas principales: csv-parse, csv-stringify y papaparse, y analizaremos ejemplos prácticos de su uso.



1. Biblioteca csv-parse: análisis de CSV con tipificación



csv-parse es parte del ecosistema csv.js, una de las bibliotecas más eficientes para analizar CSV. Soporta flujos (streams), delimitadores personalizados y tipificación estricta mediante TypeScript.



Instalación:

npm install csv-parsenpm install @types/csv-parse  // para TypeScript (si no se incluyen automáticamente)


Ejemplo de análisis de una cadena 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,Iván Ivanov,ivan@example.com,302,María Petrova,maria@example.com,253,Alekséi Smirnov,alex@example.com,35`;

// Análisis con indicación explícita de tiposconst records: User[] = parse(csvData, { columns: true, // primera línea son encabezados skip_empty_lines: true, delimiter: ',', cast: true // conversión automática de tipos (cadenas a números)});

console.log(records);// [// { id: 1, name: 'Iván Ivanov', email: 'ivan@example.com', age: 30 },// { id: 2, name: 'María Petrova', email: 'maria@example.com', age: 25 },// { id: 3, name: 'Alekséi Smirnov', email: 'alex@example.com', age: 35 }// ]


2. Biblioteca csv-stringify: generación de CSV a partir de objetos



csv-stringify es la biblioteca complementaria para crear cadenas y archivos CSV a partir de arreglos de objetos o tuplas. Es ideal para exportar datos.



Ejemplo de generación de 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'], // orden y filtrado de campos});

console.log(csvOutput);// sku,price,stock// PRD-001,1500,10// PRD-002,2500,5// PRD-003,800,20


3. Biblioteca PapaParse: analizador universal para navegador y Node.js



PapaParse es la biblioteca más popular para trabajar con CSV en JavaScript/TypeScript. Funciona tanto en el navegador como en Node.js, soporta archivos grandes mediante flujos, detección automática de delimitadores y manejo de errores.



Instalación:

npm install papaparsenpm install @types/papaparse


Ejemplo con procesamiento de archivos en 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, // conversión automática de tipos skipEmptyLines: true,});

if (result.errors.length > 0) { console.error('Errores de análisis:', result.errors);} else { console.log('Transacciones:', result.data); // result.data — arreglo de objetos Transaction}

// Análisis asíncrono con flujos para archivos grandesconst stream = fs.createReadStream('large-file.csv');Papa.parse(stream,

Recommendations