Учитывая следующее:Как перевести выражение * с помощью babel?
require('babel-core').transform('3').code
Есть ли способ, чтобы получить это вернуть 3
(выражение) вместо 3;
(заявление)?
Я пробовал:
- Поиск в Интернете и различные сайты для «выражения Бабель», «Вавилонская transpile выражения», и тому подобное.
- Передача
(3)
, но это также было преобразовано в3;
. - Высунув внутренности babel, чтобы выяснить, что происходит, но я не знаю, как это работает, чтобы разобраться в этом.
- Передача опции
minified: true
, которая утверждает, что удаляет конечную точку с запятой, но на самом деле ничего не делает.
Прямо сейчас я использую .replace(/;$/, '')
, который работает но кажется абсурдным и подвержен ошибкам.
Что делать, если вы передали выражение, которое нужно было преобразовать в несколько операторов? Babel не предоставляет гарантии, как то, что вы ищете. Плюс без полного контекста файла вокруг выражения, Babel не имеет возможности обрабатывать область видимости, например, убедиться, что он не генерирует имя переменной, которое уже используется вокруг выражения. – loganfsmyth
@loganfsmyth Какое выражение будет преобразовано в операторы? Я не могу думать ни о чем с головы. Кроме того, это не вызовет проблем, например. программа, которая устанавливает переменную в значение выражений? Мне не нужно беспокоиться о области, поскольку это автономные выражения, они не имеют никакого контекста. – Wolfgang
Что делать, если вы делаете '({x: {y, z}} = foo)'? Для этого в настоящее время требуется временная переменная для хранения 'foo.x', поэтому объявление переменной будет разделено. например 'var _tmp; _tmp = foo.x; y = _tmp.y; z = _tmp.z; '. Вы могли бы назначить задания в одном выражении, если хотите, но объявление переменной должно быть отдельным. – loganfsmyth