isAnonymousFunction

tcmts.core.extract.isAnonymousFunction · #xkdqtnkt · term · runs anywhere

An anonymous function or class expression, after erasable wrappers. Binding one to a name gives it that name at runtime (const f = () => 1 has f.name === "f").

import {
  isArrowFunction as ts_isArrowFunction, isAsExpression as ts_isAsExpression,
  isClassExpression as ts_isClassExpression, isFunctionExpression as ts_isFunctionExpression,
  isNonNullExpression as ts_isNonNullExpression, isParenthesizedExpression as ts_isParenthesizedExpression,
  isSatisfiesExpression as ts_isSatisfiesExpression, isTypeAssertion as ts_isTypeAssertionExpression,
} from "typescript/ast";
import type { Expression as ts_Expression } from "typescript/ast";

export function isAnonymousFunction(e: ts_Expression): boolean {
  while (ts_isParenthesizedExpression(e) || ts_isAsExpression(e) || ts_isSatisfiesExpression(e) || ts_isNonNullExpression(e) || ts_isTypeAssertionExpression(e)) {
    e = e.expression;
  }
  return ts_isArrowFunction(e) || ((ts_isFunctionExpression(e) || ts_isClassExpression(e)) && !e.name);
}

used by