Ah got it. Solid provides a <Show> component that will act as a guard against truthy values in TS:
<div>
<Show when={maybe()}>
{m => <div>m.foo</div>}
</Show>
</div>
For ADTs they have a switch / match component, but it doesn’t provide refinement