Travailler avec YAML en TypeScript : analyse, sérialisation et exemples pratiques
YAML (YAML Ain't Markup Language) est un format de sérialisation de données populaire, souvent utilisé pour les fichiers de configuration, la description d'API et le stockage de données structurées. Dans l'écosystème TypeScript, il existe plusieurs outils fiables pour travailler avec YAML. Dans cet article, nous examinerons en détail la bibliothèque js-yaml, qui est la norme de facto pour l'analyse et la sérialisation YAML dans les projets TypeScript.
Installation et configuration
Pour commencer, vous devez installer la bibliothèque js-yaml et ses typages TypeScript :
npm install js-yamlnpm install --save-dev @types/js-yamlAprès l'installation, vous pouvez importer la bibliothèque dans votre projet :
import * as yaml from 'js-yaml';import * as fs from 'fs';Fonctionnalités principales de la bibliothèque js-yaml
- Analyse YAML en objets TypeScript — conversion d'une chaîne YAML en structures de données typées
- Sérialisation d'objets en YAML — conversion inverse d'objets TypeScript au format YAML
- Prise en charge des types personnalisés — possibilité de définir vos propres balises YAML
- Validation de schémas — vérification de la conformité de la structure d'un document YAML
- Travail avec les fichiers — lecture et écriture de fichiers YAML via Node.js
Analyse YAML en TypeScript
La bibliothèque js-yaml fournit deux méthodes principales pour l'analyse : yaml.load() et yaml.safeLoad(). Il est recommandé d'utiliser safeLoad() pour éviter l'exécution de code potentiellement dangereux :
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']Sérialisation d'objets en YAML
Pour convertir un objet TypeScript en YAML, on utilise la méthode 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*/Travail avec les fichiers YAML dans Node.js
Il est souvent nécessaire de charger une configuration à partir d'un fichier YAML externe. Voici comment faire en utilisant le module 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(`Erreur lors du chargement du fichier YAML : ${filePath}`, error); throw error; }}
// Utilisationconst dbConfig = loadYamlConfig<DatabaseConfig>('./config/database.yaml');console.log(`Connexion à ${dbConfig.host}:${dbConfig.port}/${dbConf Aussi dans la bibliothèque
Psr/Log PHP : guide complet avec exemples pratiques
Criterion pour Rust : guide complet avec exemples
Génération de PDF en JavaScript : la bibliothèque PDFKit
Validation des données en C++ : bibliothèques et méthodes (libvalidate, nlohmann/json, Boost)
Travailler avec Markdown en C++ : bibliothèques md4c, cmark et cpp-markdown