(
param: Param<Kind, A>,
patterns: {
Single: (single: Single<Kind, A>) => R
Map: <X>(mapped: Map<Kind, X, A>) => R
Transform: <X>(mapped: Transform<Kind, X, A>) => R
Optional: <X>(optional: Optional<Kind, X>) => R
Variadic: <X>(variadic: Variadic<Kind, X>) => R
}
)
| 2101 | * maintaining type safety at the call site. |
| 2102 | */ |
| 2103 | const matchParam = <Kind extends ParamKind, A, R>( |
| 2104 | param: Param<Kind, A>, |
| 2105 | patterns: { |
| 2106 | Single: (single: Single<Kind, A>) => R |
| 2107 | Map: <X>(mapped: Map<Kind, X, A>) => R |
| 2108 | Transform: <X>(mapped: Transform<Kind, X, A>) => R |
| 2109 | Optional: <X>(optional: Optional<Kind, X>) => R |
| 2110 | Variadic: <X>(variadic: Variadic<Kind, X>) => R |
| 2111 | } |
| 2112 | ): R => { |
| 2113 | const p = param as AnyParam<Kind, A> |
| 2114 | switch (p._tag) { |
| 2115 | case "Single": |
| 2116 | return patterns.Single(p) |
| 2117 | case "Map": |
| 2118 | return patterns.Map(p) |
| 2119 | case "Transform": |
| 2120 | return patterns.Transform(p) |
| 2121 | case "Optional": |
| 2122 | return patterns.Optional(p) |
| 2123 | case "Variadic": |
| 2124 | return patterns.Variadic(p) |
| 2125 | } |
| 2126 | } |
| 2127 | |
| 2128 | /** |
| 2129 | * Recursively transforms a param by applying a function to any `Single` nodes. |
no outgoing calls
no test coverage detected