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
|
=== tests/cases/compiler/inferTInParentheses.ts ===
type F1 = (num: [number]) => void;
>F1 : (num: [number]) => void
>num : [number]
type IsNumber<T extends number> = T;
>IsNumber : T
type T1 = F1 extends (...args: (infer T)) => void ? T : never;
>T1 : [num: [number]]
>args : T
type T2 = F1 extends (args: [...(infer T)]) => void ? T : never;
>T2 : [number]
>args : [...T]
type T3<T> = T extends IsNumber<(infer N)> ? true : false;
>T3 : T3<T>
>true : true
>false : false
type T4 = F1 extends (...args: ((infer T))) => void ? T : never;
>T4 : [num: [number]]
>args : T
type T5 = F1 extends (args: [...((infer T))]) => void ? T : never;
>T5 : [number]
>args : [...T]
type T6<T> = T extends IsNumber<((infer N))> ? true : false;
>T6 : T6<T>
>true : true
>false : false
type T7 = F1 extends (...args: ((((infer T))))) => void ? T : never;
>T7 : [num: [number]]
>args : T
type T8 = F1 extends (args: [...((((infer T))))]) => void ? T : never;
>T8 : [number]
>args : [...T]
type T9<T> = T extends IsNumber<((((infer N))))> ? true : false;
>T9 : T9<T>
>true : true
>false : false
|