Unia znakowana
Typ unii z jawnym polem „znacznika”, wskazującym aktywny wariant. union w C/C++ jest niepoznakowana (surowa współdzielona pamięć, podatna na błędy w czasie działania); unia znakowana niesie informację o typie, którą kompilator może zweryfikować.
TypeScript: unia dyskryminowana. type Result = { kind: 'ok'; value: number } | { kind: 'err'; error: string }. Kompilator zawęża typ przez switch po polu kind. Enum w Ruście jest formalnie unią znakowaną — każdy wariant ma niejawny dyskryminator. C++: std::variant + std::visit. Klasyczne zastosowania: typy odpowiedzi API, maszyny stanów, węzły AST parsera. Nowoczesne systemy typów czynią unie znakowane bezpiecznymi; stara składnia union z C jest niebezpieczna (można odczytać złe pole, co daje niezdefiniowane zachowanie).