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 comuns para troca de dados tabulares. No ecossistema TypeScript, existem várias bibliotecas poderosas que permitem ler, escrever e transformar arquivos CSV com suporte total a tipos. Neste artigo, abordaremos as principais ferramentas, sua instalação e exemplos práticos.



Bibliotecas populares para trabalhar com CSV



As bibliotecas mais usadas no ambiente TypeScript/Node.js:



  • csv-parse — parte do conjunto csv, um parser confiável com suporte a streams
  • papaparse — um parser versátil para navegador e Node.js
  • csv-stringify — gerador de CSV a partir de arrays/objetos
  • csvtojson — conversor de CSV para JSON com tipagem


Instalação e configuração



Para projetos em TypeScript, a instalação é feita via npm ou yarn:



npm install csv-parse csv-stringify papaparse @types/papaparse


Se você usar csv-parse, tipos adicionais não são necessários — a biblioteca tem suporte nativo a TypeScript.



Exemplo 1: Parsing de CSV com csv-parse



A biblioteca csv-parse é ideal para trabalhar com arquivos grandes graças à API de stream. Veja um exemplo básico:



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

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

const csvData = fs.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' || context.column === 'age') { return Number(value); } return value; }});

console.log(records);// [// { id: 1, name: 'Ivan', email: 'ivan@example.com', age: 30 },// { id: 2, name: 'Maria', email: 'maria@example.com', age: 25 }// ]


Exemplo 2: Geração de CSV com tipagem



Para criar arquivos CSV, use csv-stringify. Vamos definir um tipo de dado e gerar uma string:



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

interface Product { productId: string; name: string; price: number; inStock: boolean;}

const products: Product[] = [ { productId: 'P001', name: 'Notebook', price: 75000, inStock: true }, { productId: 'P002', name: 'Mouse', price: 1500, inStock: false }, { productId: 'P003', name: 'Teclado', price: 3500, inStock: true }];

const csvOutput = stringify(products, { header: true, columns: ['productId', 'name', 'price', 'inStock']});

console.log(csvOutput);// productId,name,price,inStock// P001,Notebook,75000,true// P002,Mouse,1500,false// P003,Teclado,3500,true


Exemplo 3: Usando PapaParse no navegador



PapaParse é ideal para processamento de CSV no lado do cliente. Exemplo com upload de arquivo via input:



import Papa from 'papaparse';

interface Transaction { date: string; amount: number; category: string; description: string;}

const fileInput = document.getElementById('csvInput') as HTMLInputElement;

fileInput.addEventListener('change', (event) => { const file = (event.target as HTMLInputElement).files?.[0]; if (!file) return;

Papa.parse<Transaction>(file, { header: true, dynamicTyping: true, // conversão automática de tipos skipEmptyLines: true, complete: (result) => { console.log('Parsing concluído:', result.data); // result.data — array de objetos Transaction }, error: (error) => { console.error('Erro no parsing:', error); } });});


Exemplo 4:

Recommendations