isOptionalChain

tcmts.core.ts.isOptionalChain · #cu5qpamy · term · runs anywhere

a?.b, and the parts of the chain after it (a?.b.c).

import { NodeFlags, SyntaxKind } from "typescript/ast";
import type { Node } from "typescript/ast";

export function isOptionalChain(node: Node): boolean {
  const k = node.kind;
  return !!(node.flags & NodeFlags.OptionalChain) && (k === SyntaxKind.PropertyAccessExpression || k === SyntaxKind.ElementAccessExpression || k === SyntaxKind.CallExpression || k === SyntaxKind.NonNullExpression);
}

used by