In case what you actually want is an intersection of your attributes types (as suggested by @jcalz), besides his simple solution, we can also adapt the below one which was for a union: simply build the intersection directly, but instead of having potentially never members, they would be unknown (otherwise any non matching condition busts the output type as never):
type Extends2<T, I, A> = T extends I ? A : unknown
type AdditinalAttributes4<T> =
Extends2<T, TypeableInputs, TypeableAttributes>
& Extends2<T, DropdownInputs, DropdownAttributes>
& Extends2<T, NumericInputs, NumericAttributes>
Note that with this solution, in case the generic does not match any condition, the type outputs unknown, i.e. it accepts any type. This is also what happens with the original type in the question (as {}).
Playground Link
Original answer for a union:
A simple solution could be to just build the desired union directly, with some members of the union being possibly never (in case they are not desired), instead of using chained conditional types (which indeed can return only a single result):
type AdditinalAttributes2<T> =
| T extends TypeableInputs ? TypeableAttributes : never
| T extends DropdownInputs ? DropdownAttributes : never
| T extends NumericInputs ? NumericAttributes : never
We can even build a utility type to factorize the expression:
type Extends<T, I, A> = T extends I ? A : never
type AdditinalAttributes3<T> =
| Extends<T, TypeableInputs, TypeableAttributes>
// etc.
Playground Link