Arbeiten mit YAML in TypeScript: Vollständiger Leitfaden zum Parsen und Serialisieren

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit YAML in TypeScript: Parsen, Serialisieren und praktische Beispiele



YAML (YAML Ain't Markup Language) ist ein beliebtes Daten-Serialisierungsformat, das häufig für Konfigurationsdateien, API-Beschreibungen und die Speicherung strukturierter Daten verwendet wird. Im TypeScript-Ökosystem gibt es mehrere zuverlässige Werkzeuge für die Arbeit mit YAML. In diesem Artikel betrachten wir die Bibliothek js-yaml im Detail, die der De-facto-Standard für das Parsen und Serialisieren von YAML in TypeScript-Projekten ist.



Installation und Einrichtung



Um zu beginnen, müssen Sie die Bibliothek js-yaml und ihre TypeScript-Typdefinitionen installieren:



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


Nach der Installation können Sie die Bibliothek in Ihr Projekt importieren:



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


Hauptfunktionen der Bibliothek js-yaml



  • YAML in TypeScript-Objekte parsen — Konvertierung eines YAML-Strings in typisierte Datenstrukturen
  • Objekte in YAML serialisieren — Rückkonvertierung von TypeScript-Objekten in das YAML-Format
  • Unterstützung benutzerdefinierter Typen — Möglichkeit, eigene YAML-Tags zu definieren
  • Schema-Validierung — Überprüfung der Korrektheit der Struktur eines YAML-Dokuments
  • Dateiarbeit — Lesen und Schreiben von YAML-Dateien über Node.js


YAML in TypeScript parsen



Die Bibliothek js-yaml bietet zwei Hauptmethoden zum Parsen: yaml.load() und yaml.safeLoad(). Es wird empfohlen, safeLoad() zu verwenden, um die Ausführung potenziell gefährlichen Codes zu verhindern:



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']


Objekte in YAML serialisieren



Zur Konvertierung eines TypeScript-Objekts zurück in YAML wird die Methode yaml.dump() verwendet:



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*/


Arbeiten mit YAML-Dateien in Node.js



Häufig muss eine Konfiguration aus einer externen YAML-Datei geladen werden. So geht das mit dem Modul 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(`Fehler beim Laden der YAML-Datei: ${filePath}`, error); throw error; }}

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

Empfehlungen