استخدامات متقدمة وأمثلة لواجهة برمجة تطبيقات مُجمِّع TypeScript

توفر واجهة برمجة تطبيقات TypeScript Compiler أدوات قوية للتفاعل برمجيًا مع كود TypeScript. وهي تسمح للمطورين بتحليل كود TypeScript وتحويله وتوليده بطرق متطورة. تتعمق هذه المقالة في سيناريوهات الاستخدام المتقدمة والأمثلة لتوضيح قدرات واجهة برمجة تطبيقات TypeScript Compiler.

البدء باستخدام واجهة برمجة تطبيقات مُجمِّع TypeScript

قبل الخوض في الاستخدام المتقدم، من الضروري إعداد واجهة برمجة تطبيقات TypeScript Compiler. يتضمن ذلك تثبيت TypeScript وكتابة نص برمجي أساسي للتفاعل مع واجهة برمجة التطبيقات.

import * as ts from 'typescript';

const sourceCode = `let x: number = 1;`;
const sourceFile = ts.createSourceFile('example.ts', sourceCode, ts.ScriptTarget.ES2015);

console.log(sourceFile.text);

تحليل كود TypeScript

تتيح واجهة برمجة التطبيقات للمترجم تحليل كود TypeScript إلى شجرة بناء جملة مجردة (AST). يمكن أن يكون هذا مفيدًا لمهام تحليل الكود والتحويل.

const sourceFile = ts.createSourceFile('example.ts', sourceCode, ts.ScriptTarget.ES2015);

function visit(node: ts.Node) {
  if (ts.isVariableDeclaration(node)) {
    console.log(`Variable name: ${node.name.getText()}`);
  }
  ts.forEachChild(node, visit);
}

visit(sourceFile);

تحويل كود TypeScript

توفر واجهة برمجة التطبيقات أدوات لتحويل كود TypeScript. يوضح هذا المثال كيفية استخدام المحول لتعديل الكود.

function transformer<T extends ts.Node>(context: ts.TransformationContext) {
  function visit(node: T): T {
    if (ts.isVariableDeclaration(node)) {
      return ts.updateVariableDeclaration(node, node.name, node.type, ts.createLiteral(42)) as T;
    }
    return ts.visitEachChild(node, visit, context);
  }
  return (rootNode: T) => ts.visitNode(rootNode, visit);
}

const result = ts.transform(sourceFile, [transformer]);
const printer = ts.createPrinter();
const transformedCode = printer.printFile(result.transformed[0] as ts.SourceFile);

console.log(transformedCode);

إنشاء كود TypeScript

إن إنشاء كود TypeScript برمجيًا يعد ميزة قوية أخرى لواجهة برمجة التطبيقات. فيما يلي مثال لكيفية إنشاء ملف TypeScript جديد من البداية.

const newSourceFile = ts.createSourceFile(
  'newFile.ts',
  `const greeting: string = 'Hello, TypeScript!';`,
  ts.ScriptTarget.ES2015
);

const printer = ts.createPrinter();
const newCode = printer.printFile(newSourceFile);

console.log(newCode);

التعامل مع التشخيصات والأخطاء

توفر واجهة برمجة التطبيقات للمترجم آليات للتعامل مع التشخيصات والأخطاء. يوضح هذا المثال كيفية استخدام التشخيصات للإبلاغ عن المشكلات في كود TypeScript.

const program = ts.createProgram(['example.ts'], {});
const diagnostics = ts.getPreEmitDiagnostics(program);

diagnostics.forEach(diagnostic => {
  const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
  console.log(`Error: ${message}`);
});

خاتمة

توفر واجهة برمجة تطبيقات TypeScript Compiler مجموعة غنية من الميزات للعمل مع كود TypeScript برمجيًا. من خلال إتقان هذه القدرات المتقدمة، يمكن للمطورين إنشاء أدوات قوية لتحليل كود TypeScript وتحويله وتوليده، مما يؤدي إلى تدفقات عمل تطوير أكثر كفاءة ومرونة.