В каждой ветке is компилятор сужает тип; when-expression должен покрыть все случаи или иметь else, тип результата — общий супертип веток.
Разбор
- Идеально для маппинга UiState → Compose UI.
- Добавление ветки sealed ломает compile без else — ловите на CI.
- Избегайте else на sealed, если хотите exhaustiveness.
- Можно возвращать разные @Composable вызовы в ветках.
Итог
Sealed + when expression = типобезопасный рендеринг состояний.