当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript types.variableDeclarator函数代码示例

本文整理汇总了TypeScript中@babel/types.variableDeclarator函数的典型用法代码示例。如果您正苦于以下问题:TypeScript variableDeclarator函数的具体用法?TypeScript variableDeclarator怎么用?TypeScript variableDeclarator使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了variableDeclarator函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: if

 param.elements.forEach(elem => {
   let varName;
   if (elem.type === "Identifier") {
     varName = elem.name;
   } else if (elem.type === "AssignmentPattern") {
     varName = elem.left.name;
   } else if (elem.type === "RestParameter") {
     varName = elem.argument.name;
   } else if (elem.type === "ObjectPattern") {
     // will be processed in ObjectPattern visitor
   } else {
     throw Error("aaa unknown array pattern elem type " + elem.type);
   }
   declarators.push(
     t.variableDeclarator(
       addLoc(getTrackingIdentifier(varName), param.loc),
       ignoredCallExpression(FunctionNames.getEmptyTrackingInfo, [
         ignoredStringLiteral("arrayPatternInFunction"),
         getLocObjectASTNode(elem.loc)
       ])
     )
   );
 });
开发者ID:mattzeunert,项目名称:fromjs,代码行数:23,代码来源:babelPlugin.ts

示例2: addLoc

      originalDeclarations.forEach(function(decl) {
        newDeclarations.push(decl);
        if (!decl.init) {
          decl.init = addLoc(ignoredIdentifier("undefined"), decl.loc);
        }

        if (decl.id.type === "ArrayPattern") {
          // declaration are inserted into pattern already
        } else if (decl.id.type === "ObjectPattern") {
          // declarations are inserted into object pattern already
        } else {
          newDeclarations.push(
            t.variableDeclarator(
              addLoc(getTrackingIdentifier(decl.id.name), decl.id.loc),
              skipPath(
                t.callExpression(
                  t.identifier(FunctionNames.getLastOperationTrackingResult),
                  []
                )
              )
            )
          );
        }
      });
开发者ID:mattzeunert,项目名称:fromjs,代码行数:24,代码来源:babelPlugin.ts

示例3: handleFunction

  function handleFunction(path) {
    const declarators: any[] = [];
    path.node.params.forEach((param, i) => {
      if (param.type === "ObjectPattern") {
        // do nothing for now, logic is in objectpattern visitor
        // for (var n = 0; n < param.properties.length; n++) {
        //   const prop = param.properties[n];
        //   declarators.push(
        //     t.variableDeclarator(
        //       addLoc(
        //         getTrackingIdentifier(
        //           prop.value ? prop.value.name : prop.key.name
        //         ),
        //         prop.loc
        //       ),
        //       t.nullLiteral()
        //     )
        //   );
        // }
      } else if (param.type === "ArrayPattern") {
        param.elements.forEach(elem => {
          let varName;
          if (elem.type === "Identifier") {
            varName = elem.name;
          } else if (elem.type === "AssignmentPattern") {
            varName = elem.left.name;
          } else if (elem.type === "RestParameter") {
            varName = elem.argument.name;
          } else if (elem.type === "ObjectPattern") {
            // will be processed in ObjectPattern visitor
          } else {
            throw Error("aaa unknown array pattern elem type " + elem.type);
          }
          declarators.push(
            t.variableDeclarator(
              addLoc(getTrackingIdentifier(varName), param.loc),
              ignoredCallExpression(FunctionNames.getEmptyTrackingInfo, [
                ignoredStringLiteral("arrayPatternInFunction"),
                getLocObjectASTNode(elem.loc)
              ])
            )
          );
        });
      } else if (param.type === "AssignmentPattern") {
        let varName = param.left.name;
        declarators.push(
          t.variableDeclarator(
            addLoc(getTrackingIdentifier(varName), param.loc),
            ignoredCallExpression(FunctionNames.getEmptyTrackingInfo, [
              ignoredStringLiteral("arrayPatternInFunction"),
              getLocObjectASTNode(param.loc)
            ])
          )
        );
      } else if (param.type === "RestElement") {
        let varName = param.argument.name;
        declarators.push(
          t.variableDeclarator(
            addLoc(getTrackingIdentifier(varName), param.loc),
            ignoredCallExpression(FunctionNames.getEmptyTrackingInfo, [
              ignoredStringLiteral("restElement"),
              getLocObjectASTNode(param.loc)
            ])
          )
        );
      } else {
        declarators.push(
          t.variableDeclarator(
            addLoc(getTrackingIdentifier(param.name), param.loc),
            t.callExpression(
              t.identifier(FunctionNames.getFunctionArgTrackingInfo),
              [t.numericLiteral(i)]
            )
          )
        );
      }
    });

    // keep whole list in case the function uses `arguments` object
    // We can't just access the arg tracking values when `arguments` is used (instead of doing it
    // at the top of the function)
    // That's because when we return the argTrackingValues are not reset to the parent function's
    declarators.push(
      t.variableDeclarator(
        ignoredIdentifier("__allArgTV"),
        ignoredCallExpression(FunctionNames.getFunctionArgTrackingInfo, [])
      )
    );

    const d = t.variableDeclaration("var", declarators);
    skipPath(d);
    if (path.node.body.type !== "BlockStatement") {
      // arrow function
      path.node.body = ignoreNode(
        t.blockStatement([ignoreNode(t.returnStatement(path.node.body))])
      );
    }
    path.node.body.body.unshift(d);
    path.node.ignore = true; // I'm not sure why it would re-enter the functiondecl/expr, but it has happened before
  }
开发者ID:mattzeunert,项目名称:fromjs,代码行数:100,代码来源:babelPlugin.ts

示例4: plugin

function plugin(babel) {
  const { types: t } = babel;

  function handleFunction(path) {
    const declarators: any[] = [];
    path.node.params.forEach((param, i) => {
      if (param.type === "ObjectPattern") {
        // do nothing for now, logic is in objectpattern visitor
        // for (var n = 0; n < param.properties.length; n++) {
        //   const prop = param.properties[n];
        //   declarators.push(
        //     t.variableDeclarator(
        //       addLoc(
        //         getTrackingIdentifier(
        //           prop.value ? prop.value.name : prop.key.name
        //         ),
        //         prop.loc
        //       ),
        //       t.nullLiteral()
        //     )
        //   );
        // }
      } else if (param.type === "ArrayPattern") {
        param.elements.forEach(elem => {
          let varName;
          if (elem.type === "Identifier") {
            varName = elem.name;
          } else if (elem.type === "AssignmentPattern") {
            varName = elem.left.name;
          } else if (elem.type === "RestParameter") {
            varName = elem.argument.name;
          } else if (elem.type === "ObjectPattern") {
            // will be processed in ObjectPattern visitor
          } else {
            throw Error("aaa unknown array pattern elem type " + elem.type);
          }
          declarators.push(
            t.variableDeclarator(
              addLoc(getTrackingIdentifier(varName), param.loc),
              ignoredCallExpression(FunctionNames.getEmptyTrackingInfo, [
                ignoredStringLiteral("arrayPatternInFunction"),
                getLocObjectASTNode(elem.loc)
              ])
            )
          );
        });
      } else if (param.type === "AssignmentPattern") {
        let varName = param.left.name;
        declarators.push(
          t.variableDeclarator(
            addLoc(getTrackingIdentifier(varName), param.loc),
            ignoredCallExpression(FunctionNames.getEmptyTrackingInfo, [
              ignoredStringLiteral("arrayPatternInFunction"),
              getLocObjectASTNode(param.loc)
            ])
          )
        );
      } else if (param.type === "RestElement") {
        let varName = param.argument.name;
        declarators.push(
          t.variableDeclarator(
            addLoc(getTrackingIdentifier(varName), param.loc),
            ignoredCallExpression(FunctionNames.getEmptyTrackingInfo, [
              ignoredStringLiteral("restElement"),
              getLocObjectASTNode(param.loc)
            ])
          )
        );
      } else {
        declarators.push(
          t.variableDeclarator(
            addLoc(getTrackingIdentifier(param.name), param.loc),
            t.callExpression(
              t.identifier(FunctionNames.getFunctionArgTrackingInfo),
              [t.numericLiteral(i)]
            )
          )
        );
      }
    });

    // keep whole list in case the function uses `arguments` object
    // We can't just access the arg tracking values when `arguments` is used (instead of doing it
    // at the top of the function)
    // That's because when we return the argTrackingValues are not reset to the parent function's
    declarators.push(
      t.variableDeclarator(
        ignoredIdentifier("__allArgTV"),
        ignoredCallExpression(FunctionNames.getFunctionArgTrackingInfo, [])
      )
    );

    const d = t.variableDeclaration("var", declarators);
    skipPath(d);
    if (path.node.body.type !== "BlockStatement") {
      // arrow function
      path.node.body = ignoreNode(
        t.blockStatement([ignoreNode(t.returnStatement(path.node.body))])
      );
    }
//.........这里部分代码省略.........
开发者ID:mattzeunert,项目名称:fromjs,代码行数:101,代码来源:babelPlugin.ts


注:本文中的@babel/types.variableDeclarator函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。