简体   繁体   English

Babel插件 - 带索引的成员访问

[英]Babel plugins - Member access with index

I am writing a babel plugin. 我正在写一个babel插件。 I came across a place where I need to use index operator. 我遇到了一个需要使用索引运算符的地方。 This is code I want to get a[Symbol.something](b) , however, I can't seem to find a way to do it. 这是我想要获得a[Symbol.something](b) ,但是,我似乎无法找到一种方法来做到这一点。 I have tried doing something like this: 我尝试过这样的事情:

types.callExpression(
    types.memberExpression(types.Identifier('a'), 
        types.memberExpression(types.Identifier('Symbol'), types.Identifier('something'))
    ),
    [types.Identifier('b')]
)

However, it throws error TypeError: Property property of MemberExpression expected node to be of a type ["Identifier","PrivateName"] but instead g ot "MemberExpression" . 但是,它会抛出错误TypeError: Property property of MemberExpression expected node to be of a type ["Identifier","PrivateName"] but instead g ot "MemberExpression" I googled my problem, but I can't seem to find a way to do it. 我搜索了我的问题,但我似乎无法找到办法。

You should use computed parameter of MemberExpression . 您应该使用MemberExpression computed参数。

For example, 例如,

types.MemberExpression( types.Identifier('foo'), types.Identifier('bar') );

will generate foo.bar , whereas 将生成foo.bar ,而

types.MemberExpression( types.Identifier('foo'), types.Identifier('bar'), true );

will generate foo[bar] . 将生成foo[bar]

Thus, your code should be: 因此,您的代码应该是:

types.CallExpression(
  types.MemberExpression(
    types.Identifier('a'),
    types.MemberExpression(types.Identifier('Symbol'), types.Identifier('something')),
    true
  ),
  [types.Identifier('b')]
);

This will generate a[Symbol.something](b) . 这将生成a[Symbol.something](b)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM