interface / @typed/router/AST

MatchAst.Catch

A Match AST node defining a reactive cause boundary.

Package version
1.0.0-beta.7
Category
Matcher composition syntax
Since
1.0.0
Member of
MatchAst

Import

import { MatchAst } from "@typed/router/AST";

Access MatchAst.Catch through the imported MatchAst export. Its declaration below describes the member.

Signatures

interface Catch {
    type: "catch";
    matches: ReadonlyArray<MatchAst>;
    f: (cause: RefSubject<Cause<any>>) => Fx<any, any, any>;
}

Why

Complete Effect causes remain available to fallback UI rather than collapsing to strings.

Ownership and lifetime

Catch describes plain readonly AST data. Routes and Matchers retain the concrete nodes they receive by reference; the type itself owns no resource.

Property: f

The reactive complete-cause handler attached to a catch AST node.

Property: f: Why

Fallback output can observe changing Effect causes while preserving typed Fx composition.

Property: f: Ownership and lifetime

The handler function is retained by identity. The catch manager owns its cause RefSubject and fallback Fx in a child Scope while the boundary remains selected.

Property: matches

The ordered child matcher nodes wrapped by this boundary.

Property: matches: Why

Order is preserved for candidate and guard fallthrough.

Property: matches: Ownership and lifetime

The catch boundary retains this ordered child array by reference; active boundary Scopes are created only when its Matcher runs.

Property: type

The discriminant identifying this AST variant.

Property: type: Why

Exhaustive switches can interpret syntax without instanceof checks or hidden classes.

Source