我正在写一个babel插件.我遇到了需要使用索引运算符的地方.这是我想要获取[Symbol.something](b)的代码,但是,我似乎找不到解决方法.我试图做这样的事情:
types.callExpression(
types.memberExpression(types.Identifier('a'),types.memberExpression(types.Identifier('Symbol'),types.Identifier('something'))
),[types.Identifier('b')]
)
但是,它引发错误TypeError:MemberExpression的期望节点的Property属性为类型[“ Identifier”,“ PrivateName”],但是改为g
ot“ MemberExpression”.我用Google搜索了我的问题,但似乎找不到解决方法.
最佳答案
您应该使用
MemberExpression
的计算参数.
例如,
types.MemberExpression( types.Identifier('foo'),types.Identifier('bar') );
将生成foo.bar,而
types.MemberExpression( types.Identifier('foo'),types.Identifier('bar'),true );
将生成foo [bar].
因此,您的代码应为:
types.CallExpression(
types.MemberExpression(
types.Identifier('a'),types.MemberExpression(types.Identifier('Symbol'),types.Identifier('something')),true
),[types.Identifier('b')]
);
这将生成一个[Symbol.something](b).