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'。我会更新我的答案。 –
请分享与之相关的任何示例。 –