Utility type Extract<Type, Union>

Constructs a type by extracting from Type all
union members that are assignable to Union.