I don't think inference from conditional types is implemented in TypeScript. It's not really possible to implement in the general case anyway (how clever do you have to be to determine a function's input given its output? probably more clever than a compiler). In any case you probably don't need it. What if you did something like this:
type Class<T extends object> = new (...args: any[]) => T
type Unconditional<T extends Class<Number> | Class<String>> =
T extends Class<Number> ? number : T extends Class<String> ? string : never
function f<CT extends Class<Number> | Class<String>, T=Unconditional<CT>>(
conditional: CT
) {}
f(Number) // infers as CT=NumberConstructor, T=number
In this case you are using the Unconditional conditional type to produce T from CT... that is, instead of trying to infer the input from the output, you just calculate the output from the input.
You didn't specify where you need T... so I can't tell whether it's best to have the function be f<CT, T>, or instead just f<CT> and tell you to use Unconditional<CT> wherever you were planning to use T.
Anyway, hope that gives you some ideas. Good luck.