Как создать выражение доступа к глобальным свойствам с помощью API-интерфейса компилятора Typescript? - PullRequest
3 голосов
/ 18 марта 2019

Я пытаюсь сгенерировать некоторый машинописный код, используя компилятор api .К сожалению, официальная (или любая в этом отношении) документация скудна, и теперь я полностью застрял на очень простой задаче:

Я хочу сгенерировать простой вызов функции, такой как foo().Вот и все, простой вызов глобальной функции.

После долгих поисков я зашел так далеко:

import ts from 'typescript'

ts.createCall(
    ts.createPropertyAccess(
        *some expression*,
        'foo'
    ),
    undefined, //generics
    [], //parameters
);

Насколько я понимаю, мне нужно передать выражение createPropertyAccessбыть «владельцем» доступного свойства (например, foo в foo.bar).Однако в этом случае «владелец» отсутствует, поскольку функция находится в глобальной области видимости.

Есть ли способ сгенерировать такой вызов функции?Я попытался использовать ts.createOmittedExpression, но сгенерировал следующий код:

().bar();

1 Ответ

0 голосов
/ 18 марта 2019

В этом сценарии вы можете просто использовать ts.createIdentifier. В foo().

нет выражения доступа к свойству.
const statement = ts.createExpressionStatement(
    ts.createCall(ts.createIdentifier("foo"), undefined, undefined)
);

Кстати, зайдите на мой сайт ts-ast-viewer . Теперь он покажет код API компилятора, который создаст код в редакторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...