Member predicate TypeScript::Type::unfold

Repeatedly unfolds union and intersection types and gets any of the underlying types, or this type itself if it is not a union or intersection.

For example, for a type (S & T) | U this gets the types S, T, and U.

Type unfold()