To retrieve the object node from a CallExpression using the TypeScript compiler API, you can use the CallExpression.expression
property. This property gives you access to the expression that is being called, which in turn gives you access to the object node.
For example:
import * as ts from "typescript";
function getObjectNodeFromCallExpression(node: ts.CallExpression): ts.Expression {
if (ts.isPropertyAccessExpression(node.expression)) {
return node.expression.expression;
} else if (ts.isElementAccessExpression(node.expression)) {
return node.expression.expression;
} else {
return node.expression;
}
}
This code takes a CallExpression
node and first checks if the expression being called is a PropertyAccessExpression
or an ElementAccessExpression
. If it is, then it returns the expression
property of the relevant access expression to get the object node that the function is being called on. If it is not, then it simply returns the expression
property of the CallExpression
node itself.
Asked: 2022-01-21 11:00:00 +0000
Seen: 18 times
Last updated: Apr 28 '21