TypeScript - async / await при использовании API компилятора (ts.forEachChild) - PullRequest
0 голосов
/ 16 февраля 2019

Я использую 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...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...