Experimental
type EnumAB = 'a' | 'b';
type EnumABC = 'a' | 'b' | 'c';
const ab = 'a' as EnumAB;
const abc = 'c' as EnumABC;
const correctWiden: Opt<EnumABC> = opt(ab).widen<EnumABC>(); // AB -> ABC: Ok
const wrongWiden: Opt<never> = opt(abc).widen<EnumAB>(); // ABC -> AB: Not Ok, C is not in AB
Widen union (typically union of strings to string).
May be removed if it is later found out it's unsafe and unfixable.