3
因爲衆所周知Typescript現在是完全開源的。可在Tyescript獲得。我正在構建一個將TypeScript代碼作爲輸入並給出輸出給定代碼的AST的應用程序。爲我提供一種合適的方式來提取輸入Typescript代碼的這個AST(抽象語法樹),而不是將它們編譯並轉換爲Javascript。如何使用開源的Typescript編譯器代碼提取給定Typescript代碼的AST?
因爲衆所周知Typescript現在是完全開源的。可在Tyescript獲得。我正在構建一個將TypeScript代碼作爲輸入並給出輸出給定代碼的AST的應用程序。爲我提供一種合適的方式來提取輸入Typescript代碼的這個AST(抽象語法樹),而不是將它們編譯並轉換爲Javascript。如何使用開源的Typescript編譯器代碼提取給定Typescript代碼的AST?
Basic代碼:
const fileNames = ["C:\\MyFile.ts"];
const compilerOptions: ts.CompilerOptions = {
// compiler options go here if any...
// look at ts.CompilerOptions to see what's available
};
const program = ts.createProgram(fileNames, compilerOptions);
const typeChecker = program.getTypeChecker();
const sourceFiles = program.getSourceFiles();
sourceFiles.filter(f => /MyFile\.ts$/.test(f.fileName)).forEach(sourceFile => {
ts.forEachChild(sourceFile, node => {
const declaration = node as ts.Declaration;
if (declaration.name) {
console.log(declaration.name.getText());
}
});
});
所以,如果你提供了一個C:\MyFile.ts
,如:
class MyClass {}
interface MyInterface {}
將輸出MyClass
和MyInterface
。
找出超出我剛纔所展示的一切是很多工作。對您來說,看看和/或幫助爲this work in progress做出貢獻可能會更有益。
我不明白區域{/ *編譯器選項去這裏* /}。請解釋它的意思是什麼? –
@AhmedRaza編譯器選項,比如在tsconfig.json中找到的選項。該類型將是'ts.CompilerOptions'。我會更新我的答案。 –
請分享與之相關的任何示例。 –