TypeScript Derleyici API'sinin Gelişmiş Kullanımı ve Örnekleri

TypeScript Derleyici API'si, TypeScript koduyla programlı olarak etkileşim kurmak için güçlü araçlar sağlar. Geliştiricilerin TypeScript kodunu karmaşık yollarla analiz etmelerine, dönüştürmelerine ve oluşturmalarına olanak tanır. Bu makale, TypeScript Derleyici API'sinin yeteneklerini göstermek için gelişmiş kullanım senaryolarını ve örneklerini inceler.

TypeScript Derleyici API'sine Başlarken

Gelişmiş kullanıma dalmadan önce, TypeScript Compiler API'sini kurmak önemlidir. Bu, TypeScript'i yüklemeyi ve API ile etkileşime girmek için temel bir betik yazmayı içerir.

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 Kodunu Ayrıştırma

Derleyici API'si, TypeScript kodunun soyut bir sözdizimi ağacına (AST) ayrıştırılmasına olanak tanır. Bu, kod analizi ve dönüştürme görevleri için yararlı olabilir.

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 Kodunu Dönüştürme

API, TypeScript kodunu dönüştürmek için araçlar sağlar. Bu örnek, kodu değiştirmek için bir dönüştürücünün nasıl kullanılacağını gösterir.

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 Kodu Oluşturma

TypeScript kodunu programatik olarak oluşturmak API'nin bir diğer güçlü özelliğidir. İşte sıfırdan yeni bir TypeScript dosyasının nasıl oluşturulacağına dair bir örnek.

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);

Tanılama ve Hataların Ele Alınması

Derleyici API'si tanılama ve hataları işleme mekanizmaları sağlar. Bu örnek, TypeScript kodunda sorunları bildirmek için tanılamanın nasıl kullanılacağını gösterir.

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}`);
});

Çözüm

TypeScript Derleyici API'si, TypeScript koduyla programatik olarak çalışmak için zengin bir özellik seti sunar. Geliştiriciler, bu gelişmiş yeteneklerde ustalaşarak TypeScript kodunu analiz etmek, dönüştürmek ve oluşturmak için güçlü araçlar oluşturabilir ve bu da daha verimli ve esnek geliştirme iş akışlarına yol açabilir.