Closed
Description
TypeScript Version: 3.5.1
Code
type Ctor = new () => Date;
// ERROR, WTF?
type Z1<T> = T extends () => Ctor ? InstanceType<ReturnType<T>> : never;
// But here NO ERROR
type Z2<T extends any> = T extends () => Ctor ? InstanceType<ReturnType<T>> : never;
// ERROR
type Z3<T> = T extends () => any ? InstanceType<ReturnType<T>> : never;
// NO ERROR again
type Z4<T extends () => any> = InstanceType<ReturnType<T>>;
Actual behaviour
type Z1<T> = T extends () => Ctor ? InstanceType<ReturnType<T>> : never;
errors
Expected behaviour
type Z1<T> = T extends () => Ctor ? InstanceType<ReturnType<T>> : never;
should be valid