Travailler avec YAML en TypeScript : guide complet d'analyse et de sérialisation

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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-yaml


Aprè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

Recommendations