Я работаю над проектом, который включает проверку AST, предоставленной @ babel / parser, и в определенном (не супер-редком) случае он не ведет себя так, как я ожидал.Эта строка JavaScript:
const var1 = undefined;
при обработке этой командой:
babelParser.parse(data, {
plugins: [ `jsx`, `classProperties` ],
sourceType: `unambiguous`,
});
преобразуется в это поддерево:
{
"type": "VariableDeclarator", // expected
"start": 240,
"end": 256,
"loc": {
"start": {
"line": 17,
"column": 4
},
"end": {
"line": 17,
"column": 20
}
},
"id": {
"type": "Identifier", // also expected
"start": 240,
"end": 244,
"loc": {
"start": {
"line": 17,
"column": 4
},
"end": {
"line": 17,
"column": 8
},
"identifierName": "var1"
},
"name": "var1"
},
"init": {
"type": "Identifier", // dang, really?
"start": 247,
"end": 256,
"loc": {
"start": {
"line": 17,
"column": 11
},
"end": {
"line": 17,
"column": 20
},
"identifierName": "undefined"
},
"name": "undefined"
}
}
Почему анализатор babel обрабатывает undefined
как переменную вместо "UndefinedLiteral"?(Я имею в виду, помимо того факта, что «UndefinedLiteral», кажется, не является чем-то особенным согласно AST spec )
Есть ли способ изменить тип этого начального значенияузел?или мне придется добавить специальный код в мой код для поиска Identifier
s со значением "undefined"?