Как добавить другое свойство к существующему объекту json в файле машинописного текста, используя компилятор typscript? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть следующий файл

const ServerURL = '';
export const URLConfig = {
    ServerURL: ServerURL,
    entityKeyUrl: ServerURL + '/path/to/resource/',
}

Теперь я хочу добавить еще один URL-адрес к этому объекту, используя компилятор ast / typcript apis.

Что я пробовал?

Я прочитал исходный файл и извлек текст из SourceFile, но теперь я не знаю, как обновить его новым текстом.

Вот мой код (скрывается остальные части кода)

const source = getSourceFile(tree, '/path/to/serverurl.constants.ts');
const txt = source.getText();
const closingBrace = txt.lastIndexOf('};');
const aLineAboveClosingBrace = closingBrace - 2;
source.update("Hello", ts.createTextChangeRange(ts.createTextSpan(0, txt.length), "Hello".length + txt.length));

Это приводит к ошибке «Отладка не удалась, ложное выражение». Может ли кто-нибудь помочь мне в этом?

Обновление 1 Я смог выполнить некоторые манипуляции со строками и смог сгенерировать свой текст, но теперь, чтобы создать файл, я использовал ts.createSourceFile но это не сгенерировало никакого файла для меня.

1 Ответ

0 голосов
/ 28 апреля 2020

Если вы хотите изменить его во время компиляции, я бы предложил использовать для этого API-интерфейс Transformation.

В настоящее время TypeScript не поддерживает использование пользовательских преобразователей с использованием tsc, но вы можете используйте такие инструменты, как ttypescript . Смотрите здесь , чтобы увидеть, каким должен быть пользовательский преобразователь. Кроме того, в файле readme репозитория вы можете найти примеры других пользовательских преобразователей (вы можете использовать один из них в качестве отправной точки).

Еще один полезный инструмент, который вы можете использовать, - ts-ast-viewer - это поможет вам увидеть, что такое AST и как создать такой же (и затем изменить) AST для кода.

...