العمل مع YAML في TypeScript: دليل شامل للتحليل والتسلسل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع YAML في TypeScript: التحليل والتسلسل والأمثلة العملية



YAML (YAML Ain't Markup Language) هو تنسيق شائع لتسلسل البيانات، يُستخدم غالبًا لملفات التكوين ووصف API وتخزين البيانات المنظمة. في نظام TypeScript البيئي، توجد عدة أدوات موثوقة للعمل مع YAML. في هذه المقالة، سنستعرض بالتفصيل مكتبة js-yaml، التي تُعتبر المعيار الفعلي لتحليل وتسلسل YAML في مشاريع TypeScript.



التثبيت والإعداد



للبدء، تحتاج إلى تثبيت مكتبة js-yaml وتعريفات TypeScript الخاصة بها:



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


بعد التثبيت، يمكنك استيراد المكتبة إلى مشروعك:



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


الإمكانيات الأساسية لمكتبة js-yaml



  • تحليل YAML إلى كائنات TypeScript — تحويل سلسلة YAML إلى هياكل بيانات محددة الأنواع
  • تسلسل الكائنات إلى YAML — التحويل العكسي لكائنات TypeScript إلى تنسيق YAML
  • دعم الأنواع المخصصة — إمكانية تعريف علامات YAML الخاصة بك
  • التحقق من صحة المخططات — التأكد من صحة بنية مستند YAML
  • العمل مع الملفات — قراءة وكتابة ملفات YAML عبر Node.js


تحليل YAML في TypeScript



توفر مكتبة js-yaml طريقتين رئيسيتين للتحليل: yaml.load() و yaml.safeLoad(). يُوصى باستخدام safeLoad() لمنع تنفيذ أي كود قد يكون خطيرًا:



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


تسلسل الكائنات إلى YAML



لتحويل كائن TypeScript مرة أخرى إلى YAML، يُستخدم الأسلوب 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*/


العمل مع ملفات YAML في Node.js



غالبًا ما يكون من الضروري تحميل التكوين من ملف YAML خارجي. إليك كيفية القيام بذلك باستخدام وحدة 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(`خطأ في تحميل ملف YAML: ${filePath}`, error); throw error; }}

// الاستخدامconst dbConfig = loadYamlConfig<DatabaseConfig>('./config/database.yaml');console.log(`الاتصال بـ ${dbConfig.host}:${dbConfig.port}/${dbConf

توصيات