Trabalhando com CSV em TypeScript: bibliotecas e exemplos de código

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 populares para troca de dados tabulares. Em TypeScript (e JavaScript) existem várias bibliotecas poderosas para parsing, geração e processamento de arquivos CSV. Neste artigo, veremos as principais ferramentas, suas capacidades e daremos exemplos práticos.



Por que usar bibliotecas para CSV?



Os recursos nativos do JavaScript (por exemplo, split(',')) não consideram casos complexos:

  • Aspas escapadas e vírgulas dentro de campos
  • Separadores diferentes (ponto e vírgula, tabulação)
  • Codificações diferentes e BOM
  • Valores multilinha
  • Tipos diferentes de final de linha (CRLF, LF)

Bibliotecas profissionais resolvem todos esses problemas e fornecem uma API conveniente para trabalhar com dados.



1. csv-parse — parsing de CSV em Node.js e navegador



csv-parse — faz parte do ecossistema csv.js, uma das bibliotecas de parsing mais populares. Funciona tanto em Node.js quanto no navegador (via bundler).



Instalação

npm install csv-parse


Exemplo de uso com 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, // primeira linha — cabeçalhos skip_empty_lines: true, delimiter: ',', cast: (value, context) => { if (context.column === 'id') return parseInt(value, 10); return value; }});

console.log(records);


2. PapaParse — parser universal para navegador e Node.js



PapaParse — é uma biblioteca com excelente suporte para arquivos grandes (processamento em streaming), detecção automática de delimitador e amplas opções de configuração.



Instalação

npm install papaparse


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

if (result.errors.length > 0) { console.error('Erros de parsing:', result.errors);} else { result.data.forEach(product => { console.log(`Produto ${product.sku}: ${product.price} R$`); });}


3. csv-stringify — geração de CSV a partir de dados



Para a tarefa inversa — criar CSV a partir de arrays de objetos — use csv-stringify. Ele também faz parte do ecossistema csv.js.



Instalação

npm install csv-stringify


Exemplo de geração 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: 'Ivan Petrov', total: 1500.50 }, { orderId: 1002, customer: 'Maria Sidorova', total: 2300.00 }, { orderId: 1003, customer: 'Alexei Ivanov', total: 890.75 }];

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

writeFileSync('orders.csv', csvOutput, 'utf-8');console.log('Arquivo CSV criado com sucesso');


4. Tratamento de erros e validação de dados



Ao trabalhar com CSV, é importante tratar os erros corretamente. Vejamos um exemplo com verificação de dados:



import Papa from 'papaparse';

interface ValidatedRow { isValid: boolean; errors: s

Recommendations