本文整理汇总了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)
])
)
);
});
示例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),
[]
)
)
)
);
}
});
示例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
}
示例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))])
);
}
//.........这里部分代码省略.........