Home Reference Source Test

src/pattern-matching/rules/MatcherRule.ts

/**
 * @access private
 */
export abstract class MatcherRule<Input_Type, Output_Type>{
    constructor(
        private readonly transformation: (v: Input_Type) => Output_Type,
    ) {
    }

    abstract matches(value: Input_Type): boolean;

    execute(value: Input_Type): Output_Type {
        return this.transformation(value);
    }
}