···11export interface StringComparisonOptions {
22 transforms?: ((str: string) => string)[]
33- strategies?: ComparisonStrategy[]
33+ strategies?: ComparisonStrategy<ComparisonStrategyResultValue>[]
44}
5566export interface StringSamenessResult {
···35353636export type ComparisonStrategyResultValue = number | ComparisonStrategyResultObject;
37373838-export type StrategyFunc = (strA: string, strB: string) => ComparisonStrategyResultValue;
3838+export type StrategyFunc<T extends ComparisonStrategyResultValue> = (strA: string, strB: string) => T;
39394040-export interface ComparisonStrategy {
4040+export interface ComparisonStrategy<T extends ComparisonStrategyResultValue> {
4141 /**
4242 * The name of this strategy
4343 * */
···4545 /**
4646 * A function that accepts two string arguments and returns a number
4747 * */
4848- strategy: StrategyFunc
4848+ strategy: StrategyFunc<T>
49495050 /**
5151 * An optional function that accepts two string arguments and returns whether this strategy should be used