Свойство свойство OptionalMemberExpression ожидало, что узел будет иметь тип [«Идентификатор»], но вместо этого получил «Выражение вызова».

#typescript #babeljs #optional-chaining

Вопрос:

У меня есть строка кода, которая выглядит примерно так:

 return someObj.getSomething(param).doSomethingElse().key.anotherKey  

Все мои модульные тесты на шутки проходят.

Чтобы быть немного безопаснее, я добавил необязательную цепочку к этой строке, так что теперь это выглядит так:

 return someObj?.getSomething(param)?.doSomethingElse()?.key?.anotherKey  

Как только я это сделаю, соответствующий набор тестов приведет к ошибкам:

 Test suite failed to run   TypeError: Property property of OptionalMemberExpression expected node to be of a type ["Identifier"] but instead got "CallExpression"   at validate (node_modules/@babel/types/lib/definitions/utils.js:132:11)  at Object.validator [as validate] (node_modules/@babel/types/lib/definitions/core.js:1451:11)  at validateField (node_modules/@babel/types/lib/validators/validate.js:24:9)  at Object.validate (node_modules/@babel/types/lib/validators/validate.js:17:3)  at NodePath._replaceWith (node_modules/@babel/traverse/lib/path/replacement.js:179:7)  at NodePath.replaceWith (node_modules/@babel/traverse/lib/path/replacement.js:161:8)  at RewireState.Identifier (node_modules/babel-plugin-rewire/lib/babel-plugin-rewire.js:187:10)  at NodePath._call (node_modules/@babel/traverse/lib/path/context.js:55:20)  at NodePath.call (node_modules/@babel/traverse/lib/path/context.js:42:17)  at NodePath.visit (node_modules/@babel/traverse/lib/path/context.js:92:31)  

Дополнительный подключаемый модуль цепочки добавляется в мой package.json файл как таковой:

 "dependencies" : {  "@babel/plugin-proposal-optional-chaining": 7.14.5 }  

и в моем babel.config.js личном деле тоже.

Любая помощь будет очень признательна.

Комментарии:

1. С тех пор babel-plugin-rewire , как это там, звучит как ошибка в этом?