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
|
=== tests/cases/conformance/types/mapped/recursiveMappedTypes.ts ===
// Recursive mapped types simply appear empty
type Recurse = {
>Recurse : any
[K in keyof Recurse]: Recurse[K]
}
type Recurse1 = {
>Recurse1 : any
[K in keyof Recurse2]: Recurse2[K]
}
type Recurse2 = {
>Recurse2 : any
[K in keyof Recurse1]: Recurse1[K]
}
// Repro from #27881
export type Circular<T> = {[P in keyof T]: Circular<T>};
>Circular : Circular<T>
type tup = [number, number, number, number];
>tup : [number, number, number, number]
function foo(arg: Circular<tup>): tup {
>foo : (arg: [any, any, any, any]) => [number, number, number, number]
>arg : [any, any, any, any]
return arg;
>arg : [any, any, any, any]
}
|