export class ExpressionBase { constructor(public type: string) { } getType(): string { return this.type; } } export class BinaryExpression extends ExpressionBase { constructor(type: string, public parameter: string, public constant: any, public caseSensitive: boolean = true) { super(type); } getParameter(): string { return this.parameter; } getConstant(): any { return this.constant; } isCaseSensitive(): boolean { return this.caseSensitive; } } export class ComplexExpression extends ExpressionBase { constructor(type: string, private expressions: ExpressionBase[]) { super(type); } getExpressions(): ExpressionBase[] { return this.expressions; } }