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
|
=== tests/cases/compiler/circularContextualMappedType.ts ===
type Func<T> = () => T;
>Func : Func<T>
type Mapped<T> = { [K in keyof T]: Func<T[K]> };
>Mapped : Mapped<T>
declare function reproduce(options: number): void;
>reproduce : { (options: number): void; <T>(options: Mapped<T>): T; }
>options : number
declare function reproduce<T>(options: Mapped<T>): T
>reproduce : { (options: number): void; <T>(options: Mapped<T>): T; }
>options : Mapped<T>
reproduce({
>reproduce({ name: () => { return 123 }}) : { name: number; }
>reproduce : { (options: number): void; <T>(options: Mapped<T>): T; }
>{ name: () => { return 123 }} : { name: () => number; }
name: () => { return 123 }
>name : () => number
>() => { return 123 } : () => number
>123 : 123
});
reproduce({
>reproduce({ name() { return 123 }}) : { name: number; }
>reproduce : { (options: number): void; <T>(options: Mapped<T>): T; }
>{ name() { return 123 }} : { name(): number; }
name() { return 123 }
>name : () => number
>123 : 123
});
reproduce({
>reproduce({ name: function () { return 123 }}) : { name: number; }
>reproduce : { (options: number): void; <T>(options: Mapped<T>): T; }
>{ name: function () { return 123 }} : { name: () => number; }
name: function () { return 123 }
>name : () => number
>function () { return 123 } : () => number
>123 : 123
});
|