Package: effect
Module: Data
Type-guard and pattern-matching interface for generic tagged enums.
When to use
Use to type the $is and $match helpers for generic tagged enums.
Details
This is the $is / $match portion of the object returned by
taggedEnum when used with a WithGenerics definition.
See
Constructor — the non-generic equivalentSignature
export interface GenericMatchers<Z extends WithGenerics<number>> {
readonly $is: <Tag extends Z["taggedEnum"]["_tag"]>(
tag: Tag
) => {
<T extends TaggedEnum.Kind<Z, any, any, any, any>>(
u: T
): u is T & { readonly _tag: Tag }
(u: unknown): u is Extract<TaggedEnum.Kind<Z>, { readonly _tag: Tag }>
}
readonly $match: {
<
A,
B,
C,
D,
Cases extends {
readonly [Tag in Z["taggedEnum"]["_tag"]]: (
args: Extract<
TaggedEnum.Kind<Z, A, B, C, D>,
{ readonly _tag: Tag }
>
) => any
}
>(
cases: Cases
): (
self: TaggedEnum.Kind<Z, A, B, C, D>
) => Unify<ReturnType<Cases[Z["taggedEnum"]["_tag"]]>>
<
A,
B,
C,
D,
Cases extends {
readonly [Tag in Z["taggedEnum"]["_tag"]]: (
args: Extract<
TaggedEnum.Kind<Z, A, B, C, D>,
{ readonly _tag: Tag }
>
) => any
}
>(
self: TaggedEnum.Kind<Z, A, B, C, D>,
cases: Cases
): Unify<ReturnType<Cases[Z["taggedEnum"]["_tag"]]>>
}
}
Since v3.2.0