本文整理汇总了TypeScript中babel-types.isVariableDeclaration函数的典型用法代码示例。如果您正苦于以下问题:TypeScript isVariableDeclaration函数的具体用法?TypeScript isVariableDeclaration怎么用?TypeScript isVariableDeclaration使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了isVariableDeclaration函数的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的TypeScript代码示例。
示例1: findIdentifierFromStatement
export function findIdentifierFromStatement (statement: t.Node) {
if (t.isVariableDeclaration(statement)) {
const declarator = statement.declarations.find(s => t.isIdentifier(s.id))
if (declarator && t.isIdentifier(declarator.id)) {
return declarator.id.name
}
}
return '__return'
}
开发者ID:topud,项目名称:taro,代码行数:9,代码来源:utils.ts
示例2: parseLoopBody
export function parseLoopBody (
body: NodePath<t.BlockStatement>,
jsxDeclarations: Set<NodePath<t.Node>>,
// @TODO
// 把 templates 换成 Map 可以支持 shalow variables declared
// 现在先用 ESLint 的 no-shalow 顶着
templates: Map<string, t.JSXElement>,
loopScopes: Set<string>,
finalReturnElement: t.JSXElement,
returnedPaths: NodePath<t.Node>[]
) {
const bodyScope = body.scope
body.traverse({
JSXElement (jsxElementPath) {
const parentNode = jsxElementPath.parent
const parentPath = jsxElementPath.parentPath
const isFinalReturn = jsxElementPath.getFunctionParent().isClassMethod()
const isJSXChildren = t.isJSXElement(parentNode)
if (!isJSXChildren) {
let statementParent = jsxElementPath.getStatementParent()
if (
!(
statementParent.isVariableDeclaration() ||
statementParent.isExpressionStatement()
)
) {
statementParent = statementParent.findParent(
s => s.isVariableDeclaration() || s.isExpressionStatement()
) as NodePath<t.Statement>
}
jsxDeclarations.add(statementParent)
if (t.isVariableDeclarator(parentNode)) {
if (statementParent) {
const name = findIdentifierFromStatement(statementParent.node as t.VariableDeclaration)
// setTemplate(name, path, templates)
name && templates.set(name, jsxElementPath.node)
}
} else if (t.isLogicalExpression(parentNode)) {
const { left, operator } = parentNode
if (operator === '&&') {
if (t.isExpression(left)) {
newJSXIfAttr(jsxElementPath.node, left)
parentPath.replaceWith(jsxElementPath.node)
if (statementParent) {
const name = findIdentifierFromStatement(statementParent.node as t.VariableDeclaration)
setTemplate(name, jsxElementPath, templates)
// name && templates.set(name, path.node)
}
}
}
} else if (t.isConditionalExpression(parentNode)) {
const { test, consequent, alternate } = parentNode
const block = buildBlockElement()
if (t.isJSXElement(consequent) && t.isLiteral(alternate)) {
const { value, confident } = parentPath.get('alternate').evaluate()
if (confident && !value) {
newJSXIfAttr(block, test)
block.children = [ jsxElementPath.node ]
// newJSXIfAttr(jsxElementPath.node, test)
parentPath.replaceWith(block)
if (statementParent) {
const name = findIdentifierFromStatement(
statementParent.node as t.VariableDeclaration
)
setTemplate(name, jsxElementPath, templates)
// name && templates.set(name, path.node)
}
}
} else if (t.isLiteral(consequent) && t.isJSXElement(consequent)) {
if (t.isNullLiteral(consequent)) {
newJSXIfAttr(block, reverseBoolean(test))
// newJSXIfAttr(jsxElementPath.node, reverseBoolean(test))
parentPath.replaceWith(block)
if (statementParent) {
const name = findIdentifierFromStatement(
statementParent.node as t.VariableDeclaration
)
setTemplate(name, jsxElementPath, templates)
// name && templates.set(name, path.node)
}
}
} else if (t.isJSXElement(consequent) && t.isJSXElement(alternate)) {
const block2 = buildBlockElement()
block.children = [consequent]
newJSXIfAttr(block, test)
setJSXAttr(block2, Adapter.else)
block2.children = [alternate]
const parentBlock = buildBlockElement()
parentBlock.children = [block, block2]
parentPath.replaceWith(parentBlock)
if (statementParent) {
const name = findIdentifierFromStatement(
statementParent.node as t.VariableDeclaration
)
setTemplate(name, jsxElementPath, templates)
}
} else {
// console.log('todo')
}
} else if (t.isReturnStatement(parentNode)) {
//.........这里部分代码省略.........
开发者ID:AlloyTeam,项目名称:Nuclear,代码行数:101,代码来源:loop-component.ts
示例3: parseAst
//.........这里部分代码省略.........
const parentNode = astPath.parentPath.parentPath.node as t.VariableDeclaration
if (isAliasPath(value, pathAlias)) {
value = replaceAliasPath(sourceFilePath, value, pathAlias)
args[0].value = value
}
if (isNpmPkg(value) && !isQuickAppPkg(value) && !notExistNpmList.has(value)) {
if (value === taroJsComponents) {
if (isQuickApp) {
if (parentNode.declarations.length === 1 && parentNode.declarations[0].init) {
const id = parentNode.declarations[0].id
if (id.type === 'ObjectPattern') {
const properties = id.properties as any
properties.forEach(p => {
if (p.type === 'ObjectProperty' && p.value.type === 'Identifier') {
taroSelfComponents.add(_.kebabCase(p.value.name))
}
})
}
}
}
astPath.remove()
} else {
let isDepComponent = false
if (depComponents && depComponents.length) {
depComponents.forEach(item => {
if (item.path === value) {
isDepComponent = true
}
})
}
if (isDepComponent) {
astPath.remove()
} else {
if (t.isVariableDeclaration(astPath.parentPath.parentPath)) {
if (parentNode.declarations.length === 1 && parentNode.declarations[0].init) {
const id = parentNode.declarations[0].id
if (value === taroJsFramework && id.type === 'Identifier') {
taroImportDefaultName = id.name
value = taroMiniAppFramework
} else if (value === taroJsRedux) {
const declarations = parentNode.declarations
declarations.forEach(item => {
const id = item.id
if (id.type === 'ObjectPattern') {
const properties = id.properties as any
properties.forEach(p => {
if (p.type === 'ObjectProperty') {
if (p.value.type === 'Identifier' && p.value.name === 'connect') {
taroJsReduxConnect = p.key.name
}
}
})
}
})
}
}
}
if (!npmSkip) {
args[0].value = getExactedNpmFilePath({
npmName: value,
sourceFilePath,
filePath,
isProduction,
npmConfig,
buildAdapter,
root: appPath,
开发者ID:YangShaoQun,项目名称:taro,代码行数:67,代码来源:astProcess.ts
注:本文中的babel-types.isVariableDeclaration函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论