Trabalhando com CSV em TypeScript: bibliotecas, parsing e geração de dados

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com CSV em TypeScript: guia completo



CSV (Comma-Separated Values) — um dos formatos mais comuns para troca de dados tabulares. No ecossistema TypeScript, existem várias bibliotecas maduras que permitem fazer parsing, gerar e transformar arquivos CSV com suporte total a tipos. Neste artigo, vamos analisar três ferramentas principais: csv-parse, csv-stringify e papaparse, além de explorar exemplos práticos de uso.



1. Biblioteca csv-parse: parsing CSV com tipagem



csv-parse — faz parte do ecossistema csv.js, uma das bibliotecas mais performáticas para análise de CSV. Ela suporta streams, delimitadores personalizados e tipagem rigorosa via TypeScript.



Instalação:

npm install csv-parsenpm install @types/csv-parse  // para TypeScript (se não incluídos automaticamente)


Exemplo de parsing de uma string 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,Alexei Smirnov,alex@example.com,35`;

// Parsing com especificação explícita de tiposconst records: User[] = parse(csvData, { columns: true, // primeira linha — cabeçalhos skip_empty_lines: true, delimiter: ',', cast: true // conversão automática de tipos (strings para números)});

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: 'Alexei Smirnov', email: 'alex@example.com', age: 35 }// ]


2. Biblioteca csv-stringify: geração CSV a partir de objetos



csv-stringify — biblioteca complementar para criar strings e arquivos CSV a partir de arrays de objetos ou tuplas. Ideal para exportação de dados.



Exemplo de geração 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'], // ordem e filtragem de campos});

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


3. Biblioteca PapaParse: parser universal para navegador e Node.js



PapaParse — a biblioteca mais popular para trabalhar com CSV em JavaScript/TypeScript. Funciona tanto no navegador quanto no Node.js, suporta arquivos grandes via streams, detecção automática de delimitador e tratamento de erros.



Instalação:

npm install papaparsenpm install @types/papaparse


Exemplo com processamento de arquivo no 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, // conversão automática de tipos skipEmptyLines: true,});

if (result.errors.length > 0) { console.error('Erros de parsing:', result.errors);} else { console.log('Transações:', result.data); // result.data — array de objetos Transaction}

// Parsing assíncrono com streams para arquivos grandesconst stream = fs.createReadStream('large-file.csv');Papa.parse(stream,

Recommendations