Dopasowanie wyczerpujące
Mechanizm kompilatora: przy dopasowaniu do typu unii każdy wariant musi zostać obsłużony jawnie. match w Ruście, case w Haskellu, w TypeScripcie sztuczka z never. Dodanie nowego wariantu wymusza aktualizację wszędzie — bezpieczeństwo refaktoryzacji.
Rust: match status { Active => ..., Pending => ... } daje błąd kompilacji, jeśli pominiesz wariant. Klasyczny wzorzec dla automatów stanów. TypeScript: w gałęzi default przypisujemy wartość do never — jeśli wszystkie warianty są obsłużone, typ to never, a brak któregoś kończy się błędem typów. function assertNever(x: never): never { throw }. Java od wersji 21: typy sealed i dopasowanie wzorców w switch. Nowoczesna alternatywa dla klasycznego wzorca Visitor.