UNPKG

@akala/core

Version:
39 lines (38 loc) 1.78 kB
import { Expression, type TypedExpression } from './expression.js'; import { ExpressionType } from './expression-type.js'; import type { ExpressionVisitor } from './visitors/expression-visitor.js'; import type { IVisitable } from './visitable.js'; /** * Represents a member expression, which accesses a property of an object. * @template T - The type of the source object expression. * @template TMember - The type of the member name (a key of T). * @template U - The type of the member value (T[TMember]). */ export declare class MemberExpression<T, TMember extends keyof T, U extends T[TMember]> extends Expression implements IVisitable<ExpressionVisitor, TypedExpression<U>> { readonly source: TypedExpression<T>; readonly member: TypedExpression<TMember>; optional: boolean; /** * Gets the type identifier for this expression. * @returns {ExpressionType.MemberExpression} The expression type constant */ get type(): ExpressionType.MemberExpression; /** * Indicates the length/size associated with the member expression (used for array expressions) */ $$length: number; /** * Initializes a new instance of the MemberExpression class. * @param {TypedExpression<T>} source - The source expression. * @param {TypedExpression<TMember>} member - The member expression. * @param {boolean} optional - Indicates whether the member is optional. */ constructor(source: TypedExpression<T>, member: TypedExpression<TMember>, optional: boolean); /** * Accepts a visitor. * @param {ExpressionVisitor} visitor - The visitor to accept. * @returns {TypedExpression<U>} The result of the visit. */ accept(visitor: ExpressionVisitor): TypedExpression<U>; toString(): string; }