Trabajo con el sistema de archivos en TypeScript: guía completa

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

Introducción al trabajo con el sistema de archivos en TypeScript



Trabajar con el sistema de archivos es una de las tareas clave en el desarrollo de aplicaciones de servidor, utilidades y herramientas de línea de comandos. TypeScript, siendo una extensión de JavaScript, proporciona todas las capacidades de Node.js para interactuar con archivos y directorios, pero añade tipado estricto, lo que hace que el código sea más robusto y predecible.



En este artículo, analizaremos en detalle cómo trabajar con el sistema de archivos en TypeScript: desde operaciones básicas de lectura y escritura hasta técnicas avanzadas, como el trabajo con streams y procesamiento asíncrono. Todos los ejemplos incluyen código listo para usar que puedes implementar directamente en tus proyectos.



Para trabajar con el sistema de archivos en TypeScript se utiliza el módulo incorporado fs (file system) de Node.js. Este proporciona métodos tanto síncronos como asíncronos. En proyectos modernos, se recomienda usar las versiones asíncronas con promesas (fs.promises) para una ejecución no bloqueante.



1. Configuración del proyecto e importación de módulos



Antes de comenzar, asegúrate de que tu proyecto esté configurado para trabajar con Node.js y TypeScript. Crea un directorio para el proyecto e inicialízalo:



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


Después de la configuración, en el archivo tsconfig.json asegúrate de que el parámetro module esté establecido en commonjs o ESNext, y target en ES2020 o superior.



Ahora creemos el archivo index.ts e importemos los módulos necesarios:



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

// O usamos la versión con promisesimport { promises as fsPromises } from 'fs';


El módulo path también es importante: proporciona utilidades para trabajar con rutas de archivos, lo que hace que el código sea multiplataforma (Windows vs Unix).



2. Lectura y escritura de archivos



2.1 Lectura de un archivo



Veamos las operaciones básicas con archivos. Comencemos con la lectura del contenido de un archivo. El enfoque asíncrono usando async/await es la forma más moderna y 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('Error al leer el archivo:', error); throw error; }}

// Usoasync function main() { const content = await readFileExample('./example.txt'); console.log('Contenido del archivo:', content);}

main();


El método readFile recibe la ruta del archivo y una codificación opcional (por defecto null — devuelve un Buffer). Si se especifica 'utf-8', devuelve una cadena.



2.2 Escritura en un archivo



La escritura de datos en un archivo se realiza con writeFile. Si el archivo no existe, se crea. Si existe, se sobrescribe.



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('Archivo escrito exitosamente'); } catch (error) { console.error('Error al escribir el archivo:', error); throw error; }}

// Añadir al final del archivo (append)async function appendFileExample(filePath: string, data: string): Promise<void> { try { await fs.appendFile(filePath, data + '', 'utf-8'); console.log('Datos añadidos al final del archivo'); } catch (error) { console.error('Error al añadir datos:', error); throw error; }}


2.3 Trabajo con archivos JSON



A menudo en las aplicaciones es necesario guardar y cargar datos en formato JSON. Aquí tienes un wrapper conveniente:

Blogs

Book Recommendations