Trabalhando com o sistema de arquivos em TypeScript: guia completo

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

Introdução ao trabalho com sistema de arquivos em TypeScript



Trabalhar com sistema de arquivos é uma das tarefas principais no desenvolvimento de aplicações server-side, utilitários e ferramentas de linha de comando. TypeScript, sendo uma extensão do JavaScript, fornece todos os recursos do Node.js para interagir com arquivos e diretórios, mas adiciona tipagem estrita, tornando o código mais confiável e previsível.



Neste artigo, vamos explorar detalhadamente como trabalhar com sistema de arquivos em TypeScript: desde operações básicas de leitura e escrita até técnicas avançadas, como trabalho com streams e processamento assíncrono. Todos os exemplos são acompanhados de código pronto que você pode usar imediatamente em seus projetos.



Para trabalhar com sistema de arquivos em TypeScript, usamos o módulo nativo fs (file system) do Node.js. Ele fornece métodos síncronos e assíncronos. Em projetos modernos, recomenda-se usar as versões assíncronas com promises (fs.promises) para execução não bloqueante.



1. Configuração do projeto e importação de módulos



Antes de começar, certifique-se de que seu projeto está configurado para funcionar com Node.js e TypeScript. Crie um diretório para o projeto e inicialize-o:



mkdir fs-typescript-tutorialcd fs-typescript-tutorialnpm init -ynpm install typescript @types/node --save-devnpx tsc --init


Após a configuração, no arquivo tsconfig.json, verifique se o parâmetro module está definido como commonjs ou ESNext, e target como ES2020 ou superior.



Agora, crie o arquivo index.ts e importe os módulos necessários:



import * as fs from 'fs';import * as path from 'path';

// Ou use a versão com promisesimport { promises as fsPromises } from 'fs';


O módulo path também é importante: ele fornece utilitários para trabalhar com caminhos de arquivos, tornando o código multiplataforma (Windows vs Unix).



2. Leitura e escrita de arquivos



2.1 Leitura de arquivo



Vamos considerar as operações básicas com arquivos. Começaremos com a leitura do conteúdo de um arquivo. A abordagem assíncrona usando async/await é a mais moderna e conveniente.



import { promises as fs } from 'fs';

async function readFileExample(filePath: string): Promise<string> { try { const data = await fs.readFile(filePath, 'utf-8'); return data; } catch (error) { console.error('Erro ao ler o arquivo:', error); throw error; }}

// Usoasync function main() { const content = await readFileExample('./example.txt'); console.log('Conteúdo do arquivo:', content);}

main();


O método readFile recebe o caminho do arquivo e uma codificação opcional (padrão null — retorna Buffer). Se especificar 'utf-8', retorna uma string.



2.2 Escrita em arquivo



A escrita de dados em um arquivo é feita com writeFile. Se o arquivo não existir, ele será criado. Se existir, será sobrescrito.



import { promises as fs } from 'fs';

async function writeFileExample(filePath: string, data: string): Promise<void> { try { await fs.writeFile(filePath, data, 'utf-8'); console.log('Arquivo escrito com sucesso'); } catch (error) { console.error('Erro ao escrever o arquivo:', error); throw error; }}

// Adicionar ao final do arquivo (append)async function appendFileExample(filePath: string, data: string): Promise<void> { try { await fs.appendFile(filePath, data + '', 'utf-8'); console.log('Dados adicionados ao final do arquivo'); } catch (error) { console.error('Erro ao adicionar dados:', error); throw error; }}


2.3 Trabalhando com arquivos JSON



Frequentemente em aplicações, é necessário salvar e carregar dados no formato JSON. Aqui está um wrapper conveniente:

Blogs

Book Recommendations