ts.createProgram
- TypeScript kursu
- Uzman
- Ders 1/35
- 4 dk
Program oluşturmayı ve kaynak dosyaları öğrenirsin.
ts.createProgram nedir?
ts.createProgram, TypeScript derleyicisinde bir derlemenin başlangıç noktasıdır. Dönen Program nesnesi kaynak dosyaları, derleyici seçeneklerini ve tür denetleyiciye erişimi bir arada tutar. Dosya adları, derleyici seçenekleri ve isteğe bağlı bir CompilerHost ile çağrılır.
import ts from "typescript";
const program = ts.createProgram(
["app.ts"],
ts.getDefaultCompilerOptions()
);
const sources = program.getSourceFiles();Program üzerinden kaynak dosyalar, semboller ve türler gibi tüm derleme verilerine ulaşırsın.
SourceFile ve CompilerHost
Her SourceFile, TypeScript AST'sinin kök düğümüdür ve SyntaxKind.SourceFile türündedir. .fileName, .statements ve .getText() özellikleri yaygındır. Diskten okumak yerine bellekteki kaynak için bir CompilerHost verirsin; getSourceFile yöntemi ts.createSourceFile çağırır.
const host: ts.CompilerHost = {
getSourceFile: (name, lang) =>
ts.createSourceFile(name, code, lang, true),
// ... diğer yöntemler
};
const program = ts.createProgram(["app.ts"], {}, host);Uygulama Bellekten program oluştur
Bellekteki app.ts dosyası için const x = 1; içeriğini kullan. Bir CompilerHost tanımla; getSourceFile yöntemi bu dosya için ts.createSourceFile ile SourceFile döndürsün. noLib: true seçeneğiyle ts.createProgram oluştur ve kaynak dosyalarının adlarını yazdır.
Başlangıç kodu
import * as ts from "typescript";
// Bellekten kaynak için bir CompilerHost tanımla
// getSourceFile, dosya adı app.ts ise SourceFile döndürsün
// noLib: true ile program oluştur
// Tüm kaynak dosyaların adlarını yazdır
// kodunu buraya yazÖrnek çözüm
import ts from "typescript";
const fileName = "app.ts";
const sourceText = "const x = 1;";
const host: ts.CompilerHost = {
fileExists: (name) => name === fileName,
readFile: (name) => (name === fileName ? sourceText : undefined),
getSourceFile: (name, lang) =>
name === fileName ? ts.createSourceFile(name, sourceText, lang, true) : undefined,
writeFile: () => {},
getDefaultLibFileName: () => "lib.d.ts",
useCaseSensitiveFileNames: () => true,
getCanonicalFileName: (n) => n,
getCurrentDirectory: () => "",
getNewLine: () => "\n",
};
const program = ts.createProgram([fileName], { noLib: true }, host);
for (const sf of program.getSourceFiles()) {
console.log(sf.fileName);
}Beklenen çıktı
app.ts
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Program nesnesinin getSourceFiles() yöntemi ne döndürür?
- Symbol[] sembolleri
- SourceFile[] dizisi Doğru cevap
- string[] dosya adları
- Type[] türleri
Açıklama: getSourceFiles() derlemedeki tüm kaynak dosyaları SourceFile düğümleri olarak döndürür; dosya adlarını veya türleri değil.
2 Ad ile kaynak dosya
const program = ts.createProgram(["app.ts"], {}, host);
const sf = program.getSourceFile("app.ts");
console.log(sf?.____);
const program = ts.createProgram(["app.ts"], {}, host);
const sf = program.getSourceFile("app.ts");
console.log(sf?.fileName);
Açıklama: SourceFile.fileName dosyanın adını taşır; getSourceFile ad ile arama yapar ve SourceFile döndürür.
3 createProgram parçaları
| Kavram | Anlamı |
|---|---|
ts.createProgram |
Derleme nesnesi oluşturur |
getSourceFiles() |
Tüm kaynak dosyaları döndürür |
getSourceFile(name) |
Belirli bir dosyayı döndürür |
CompilerHost |
Dosya okumayı özelleştirir |