© 2026 Hedgehog Software, LLC
Option.firstSomeOf
Data.taggedEnum<AlgebraicDataType
import { Data, Option } from "effect" type AlgebraicDataType = Data.TaggedEnum<{ VariantA: {}; VariantB: {}; }>; const { VariantA, VariantB } = Data.taggedEnum<AlgebraicDataType>(); // Type-checks Option.firstSomeOf([ Option.none(), Option.some(VariantA()), ]); // Type-checks Option.firstSomeOf([ Option.none(), Option.some(VariantB()), ]); // Does not type check Option.firstSomeOf([ Option.some(VariantA()), Option.some(VariantB()), ]);