Start here. This is the direct spoken answer to practice first.
Overview
Sealed types are useful when the domain owns a known set of variants and wants the compiler to help keep that set controlled.
A sealed class or interface restricts which types may directly extend or implement it. That is useful for a deliberately closed model such as a payment result with Approved, Declined, and Unavailable variants. The permitted subtypes must declare whether they are final, sealed, or non-sealed. Because the set is known, pattern matching and switch expressions can reason exhaustively about the variants. A normal open interface is better when third parties or future modules are expected to add implementations freely.