You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
TypeScript Version: TS Playground version (3.4.1), 3.5.0-dev.20190523
Search Terms: ReturnType, function, conditional type
Code
declarefunctiondoThing<Fextends()=>any>(f: ()=>ReturnType<F>): void;//== This fails ==typeBar<Fextends()=>any>=(&(()=>ReturnType<F>)//Should be the same as `unknown`&(Fextendsany ? unknown : unknown));functionbar<Fextends()=>any>(f: F){/* Fail Type 'ReturnType<F>' is not assignable to type 'ReturnType<(() => ReturnType<F>) & (F extends any ? unknown : unknown)>' Type '() => any' is not assignable to type 'F extends any ? unknown : unknown' */doThing<Bar<F>>(() : ReturnType<F>=>{returnf();});//Fail//Type '() => any' is not assignable to type 'F extends any ? unknown : unknown'constt: (Fextendsany ? unknown : unknown)=((): any=>3);//OK!constt2: (unknown)=((): any=>3);}//== This works ==typeBar2<Fextends()=>any>=(&(()=>ReturnType<F>)&unknown);functionbar2<Fextends()=>any>(f: F){//OK!doThing<Bar2<F>>(() : ReturnType<F>=>{returnf();});}
TypeScript Version: TS Playground version (3.4.1), 3.5.0-dev.20190523
Search Terms: ReturnType, function, conditional type
Code
Expected behavior:
All failures should work.
Actual behavior:
They do not work.
Playground Link: Playground
Related Issues: