Я использую API-интерфейс компилятора TypeScript (https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API)) и хочу иметь возможность использовать своего рода асинхронную / ожидающую (или просто Promise) для моего инструктора TypeScript.
Вприведенный ниже код означает, что функция init () может быть помечена как «асинхронная», а следующая строка после вызова init () должна выполняться только после завершения итерации по всем узлам.
Любая идея о том, как это сделать? Спасибо, ребята! И счастливого TypeScripting.
import * as ts from "typescript";
const fileNames = ['filename1.ts', 'filename2.ts'];
const program = ts.createProgram(fileNames, {
target: ts.ScriptTarget.ES5, module: ts.ModuleKind.CommonJS
});
// TODO: make this function async:
// End result should be:
/*
init();
// the following line must execute only when iteration through all nodes is completed.
console.log('init complete.');
*/
function init() {
for (const sourceFile of program.getSourceFiles()) {
ts.forEachChild(sourceFile, walkNode);
}
}
function walkNode(node: ts.Node) {
// some code here...
if (node.kind === ts.SyntaxKind.ModuleDeclaration) {
ts.forEachChild(node, walkNode);
}
// some code here...
}