1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
=== tests/cases/compiler/inlineConditionalHasSimilarAssignability.ts ===
type MyExtract<T, U> = T extends U ? T : never
>MyExtract : MyExtract<T, U>
function foo<T>(a: T) {
>foo : <T>(a: T) => void
>a : T
const b: Extract<any[], T> = 0 as any;
>b : Extract<any[], T>
>0 as any : any
>0 : 0
a = b; // ok
>a = b : Extract<any[], T>
>a : T
>b : Extract<any[], T>
const c: (any[] extends T ? any[] : never) = 0 as any;
>c : any[] extends T ? any[] : never
>0 as any : any
>0 : 0
a = c;
>a = c : any[] extends T ? any[] : never
>a : T
>c : any[] extends T ? any[] : never
const d: MyExtract<any[], T> = 0 as any;
>d : MyExtract<any[], T>
>0 as any : any
>0 : 0
a = d; // ok
>a = d : MyExtract<any[], T>
>a : T
>d : MyExtract<any[], T>
type CustomType = any[] extends T ? any[] : never;
>CustomType : any[] extends T ? any[] : never
const e: CustomType = 0 as any;
>e : any[] extends T ? any[] : never
>0 as any : any
>0 : 0
a = e;
>a = e : any[] extends T ? any[] : never
>a : T
>e : any[] extends T ? any[] : never
}
|