本文整理汇总了TypeScript中path.scope.hasBinding方法的典型用法代码示例。如果您正苦于以下问题:TypeScript scope.hasBinding方法的具体用法?TypeScript scope.hasBinding怎么用?TypeScript scope.hasBinding使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类path.scope
的用法示例。
在下文中一共展示了scope.hasBinding方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: resolvePartialWildcardString
plugins: [({ types: t }) => {
function resolvePartialWildcardString (node, lastIsWildcard) {
if (t.isStringLiteral(node))
return node.value;
if (t.isTemplateLiteral(node)) {
let str = '';
for (let i = 0; i < node.quasis.length; i++) {
const quasiStr = node.quasis[i].value.cooked;
if (quasiStr.length) {
str += quasiStr;
lastIsWildcard = false;
}
const nextNode = node.expressions[i];
if (nextNode) {
const nextStr = resolvePartialWildcardString(nextNode, lastIsWildcard);
if (nextStr.length) {
lastIsWildcard = nextStr.endsWith('*');
str += nextStr;
}
}
}
return str;
}
if (t.isBinaryExpression(node) && node.operator === '+') {
const leftResolved = resolvePartialWildcardString(node.left, lastIsWildcard);
if (leftResolved.length)
lastIsWildcard = leftResolved.endsWith('*');
const rightResolved = resolvePartialWildcardString(node.right, lastIsWildcard);
return leftResolved + rightResolved;
}
return lastIsWildcard ? '' : '*';
}
return {
visitor: {
ReferencedIdentifier (path) {
const identifierName = path.node.name;
if (!hasProcess && identifierName === 'process' && !path.scope.hasBinding('process'))
hasProcess = true;
if (!hasBuffer && identifierName === 'Buffer' && !path.scope.hasBinding('Buffer'))
hasBuffer = true;
},
CallExpression (path) {
if (t.isIdentifier(path.node.callee, { name: 'require' })) {
const req = resolvePartialWildcardString(path.node.arguments[0], false);
if (req !== '*')
requires.add(req);
}
else if (t.isMemberExpression(path.node.callee) &&
t.isIdentifier(path.node.callee.object, { name: 'require' }) &&
t.isIdentifier(path.node.callee.property, { name: 'resolve' })) {
const req = resolvePartialWildcardString(path.node.arguments[0], false);
if (req.indexOf('*') !== -1)
requires.add(req);
}
}
}
};
}]