Trabajo con CSV en TypeScript: bibliotecas y ejemplos de código

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 populares para el intercambio de datos tabulares. En TypeScript (y JavaScript) existen varias bibliotecas potentes para analizar, generar y procesar archivos CSV. En este artículo, revisaremos las herramientas principales, sus capacidades y proporcionaremos ejemplos prácticos.



¿Por qué usar bibliotecas para CSV?



Las herramientas integradas de JavaScript (por ejemplo, split(',')) no manejan casos complejos:

  • Comillas escapadas y comas dentro de campos
  • Diferentes delimitadores (punto y coma, tabulación)
  • Diferentes codificaciones y BOM
  • Valores multilínea
  • Diferentes tipos de final de línea (CRLF, LF)

Las bibliotecas profesionales resuelven todos estos problemas y proporcionan una API conveniente para trabajar con datos.



1. csv-parse — análisis de CSV en Node.js y navegador



csv-parse es parte del ecosistema csv.js, una de las bibliotecas de análisis más populares. Funciona tanto en Node.js como en el navegador (a través de un bundler).



Instalación

npm install csv-parse


Ejemplo de uso con TypeScript

import { parse } from 'csv-parse/sync';import { readFileSync } from 'fs';

interface User { id: number; name: string; email: string;}

const csvData = readFileSync('users.csv', 'utf-8');const records: User[] = parse(csvData, { columns: true, // primera fila son encabezados skip_empty_lines: true, delimiter: ',', cast: (value, context) => { if (context.column === 'id') return parseInt(value, 10); return value; }});

console.log(records);


2. PapaParse — analizador universal para navegador y Node.js



PapaParse es una biblioteca con excelente soporte para archivos grandes (procesamiento por flujo), detección automática de delimitadores y amplias opciones de configuración.



Instalación

npm install papaparse


Ejemplo con tipificación de resultados

import Papa from 'papaparse';

interface Product { sku: string; price: number; quantity: number;}

const csvString = `sku,price,quantityABC-001,29.99,100ABC-002,49.50,50`;

const result = Papa.parse<Product>(csvString, { 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 { result.data.forEach(product => { console.log(`Producto ${product.sku}: ${product.price} EUR`); });}


3. csv-stringify — generación de CSV a partir de datos



Para la tarea inversa — crear CSV a partir de arrays de objetos — use csv-stringify. También forma parte del ecosistema csv.js.



Instalación

npm install csv-stringify


Ejemplo de generación de CSV

import { stringify } from 'csv-stringify/sync';import { writeFileSync } from 'fs';

interface Order { orderId: number; customer: string; total: number;}

const orders: Order[] = [ { orderId: 1001, customer: 'Iván Petrov', total: 1500.50 }, { orderId: 1002, customer: 'María Sidorova', total: 2300.00 }, { orderId: 1003, customer: 'Alexéi Ivanov', total: 890.75 }];

const csvOutput = stringify(orders, { header: true, columns: ['orderId', 'customer', 'total']});

writeFileSync('orders.csv', csvOutput, 'utf-8');console.log('Archivo CSV creado exitosamente');


4. Manejo de errores y validación de datos



Al trabajar con CSV, es importante manejar los errores correctamente. Veamos un ejemplo con verificación de datos:



import Papa from 'papaparse';

interface ValidatedRow { isValid: boolean; errors: s

Recommendations