Trabajo con YAML en TypeScript: guía completa de análisis y serialización

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

Trabajo con YAML en TypeScript: análisis, serialización y ejemplos prácticos



YAML (YAML Ain't Markup Language) es un formato popular de serialización de datos que se utiliza a menudo para archivos de configuración, descripción de API y almacenamiento de datos estructurados. En el ecosistema de TypeScript, existen varias herramientas confiables para trabajar con YAML. En este artículo, analizaremos en detalle la biblioteca js-yaml, que es el estándar de facto para el análisis y la serialización de YAML en proyectos TypeScript.



Instalación y configuración



Para comenzar, es necesario instalar la biblioteca js-yaml y sus definiciones de tipos para TypeScript:



npm install js-yamlnpm install --save-dev @types/js-yaml


Después de la instalación, puede importar la biblioteca en su proyecto:



import * as yaml from 'js-yaml';import * as fs from 'fs';


Funcionalidades principales de la biblioteca js-yaml



  • Análisis de YAML a objetos TypeScript — conversión de una cadena YAML en estructuras de datos tipadas
  • Serialización de objetos a YAML — conversión inversa de objetos TypeScript al formato YAML
  • Soporte para tipos personalizados — posibilidad de definir etiquetas YAML propias
  • Validación de esquemas — verificación de la corrección de la estructura de un documento YAML
  • Trabajo con archivos — lectura y escritura de archivos YAML a través de Node.js


Análisis de YAML en TypeScript



La biblioteca js-yaml proporciona dos métodos principales para el análisis: yaml.load() y yaml.safeLoad(). Se recomienda usar safeLoad() para evitar la ejecución de código potencialmente peligroso:



import * as yaml from 'js-yaml';

const yamlString = `name: PythonLibversion: 1.0.0features: - parsing - serialization - validationmetadata: author: Developer created: 2024-01-15`;

interface Config { name: string; version: string; features: string[]; metadata: { author: string; created: string; };}

const config: Config = yaml.load(yamlString) as Config;console.log(config.name); // PythonLibconsole.log(config.features); // ['parsing', 'serialization', 'validation']


Serialización de objetos a YAML



Para convertir un objeto TypeScript de vuelta a YAML, se utiliza el método yaml.dump():



import * as yaml from 'js-yaml';

interface ServerConfig { host: string; port: number; ssl: boolean; paths: { static: string; uploads: string; };}

const serverConfig: ServerConfig = { host: 'localhost', port: 3000, ssl: false, paths: { static: './public', uploads: './uploads' }};

const yamlOutput = yaml.dump(serverConfig, { indent: 2, lineWidth: 80, noRefs: true});

console.log(yamlOutput);/*host: localhostport: 3000ssl: falsepaths: static: ./public uploads: ./uploads*/


Trabajo con archivos YAML en Node.js



A menudo es necesario cargar una configuración desde un archivo YAML externo. Así es como se hace usando el módulo fs:



import * as yaml from 'js-yaml';import * as fs from 'fs';import * as path from 'path';

interface DatabaseConfig { host: string; port: number; database: string; username: string; password: string;}

function loadYamlConfig<T>(filePath: string): T { try { const fileContent = fs.readFileSync(path.resolve(filePath), 'utf8'); return yaml.load(fileContent) as T; } catch (error) { console.error(`Error al cargar el archivo YAML: ${filePath}`, error); throw error; }}

// Usoconst dbConfig = loadYamlConfig<DatabaseConfig>('./config/database.yaml');console.log(`Conectando a ${dbConfig.host}:${dbConfig.port}/${dbConf

Recommendations