Это открытый вопрос; см. microsoft / TypeScript # 23132 . Вы можете решить эту проблему ? или описать свой вариант использования, если считаете, что он неотразим. Не уверен, что это когда-нибудь будет изменено. На данный момент, однако, условные типы более или менее игнорируют любое обобщенное ограничение c, и обходной путь должен использовать дополнительные и, возможно, избыточные проверки:
type Auto<T extends (A | B)> = T extends A ? C<T> : T extends B ? D<T> : never
Это должно вести себя так, как вы этого хотите. Хорошо, надеюсь, это поможет; удачи!
Детская площадка ссылка на код