typeMyVariant=Variant<{Sum: number[];Product: number[];Str: string;Empty: void;}>;const{ Sum, Product, Str, Empty }=variant<VariantMap<MyVariant>>();constsomeOption=Sum([1,2,7,8]);constreduced=match<MyVariant>(someOption,{Sum: arr=>arr.reduce((a,b)=>a+b),Product: arr=>arr.reduce((a,b)=>a*b),Str: s=>s.length,Empty: ()=>0,});// reduced == 18Implementation of variant function depends on Proxy