TypeScript
ts.createProgram
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.
Örnek çözümü göster
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);
}
Kendini test et
-
Program nesnesinin getSourceFiles() yöntemi ne döndürür?
- Symbol[] sembolleri
- SourceFile[] dizisi
- string[] dosya adları
- Type[] türleri
Cevabı göster
SourceFile[] dizisi — getSourceFiles() derlemedeki tüm kaynak dosyaları SourceFile düğümleri olarak döndürür; dosya adlarını veya türleri değil.
-
Ad ile kaynak dosya
const program = ts.createProgram(["app.ts"], {}, host);
const sf = program.getSourceFile("app.ts");
console.log(sf?.____);
Cevabı göster
const program = ts.createProgram(["app.ts"], {}, host);
const sf = program.getSourceFile("app.ts");
console.log(sf?.fileName);
-
createProgram parçaları
- 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
Sıradaki ders: TypeChecker